Steven Davidson escribió:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div class="Ih2E3d"><br>
</div>La función miembro 'get()' recoge y extrae el siguiente carácter en el<br>
canal de entrada. En el código de Luchito, necesitamos extraer el<br>
carácter '\n' debido a la cadena entrante que representa un número; esto es,<br>
<div class="Ih2E3d"><br>
cout<<"ingrese fac2  ";   cin>>m;<br>
<br>
</div>El carácter '\n' queda en el búfer y por tanto tenemos que eliminarlo.<br>
Esto se puede hacer fácilmente con 'get()'.<br>
<br>
Podéis usar otro método que es la función miembro 'ignore()'. Por<br>
defecto, ignora y extrae 1 solo carácter, pero podemos indicar la<br>
cantidad si queremos. Esto es,<br>
<br>
cin.ignore( 100 );  // Ignora los 100 primeros caracteres en el canal<br>
<br>
<br>
Una función auxiliar es consultar la cantidad de caracteres en el canal<br>
a través de la función miembro 'in_avail()' de la clase 'streambuf'. Los<br>
canales internamente tienen un objeto polimórfico de la jerarquía<br>
'streambuf'. Podemos acceder a tal objeto a través de la funcidn miembro<br>
'rdbuf()'. Al final, haríamos lo siguiente:<br>
<br>
ios::streamsize nCant = cin.rdbuf->in_avail();<br>
if( nCant > 0 )<br>
   cout << "Existen " << nCant << " caracteres en el canal\n";<br>
else<br>
   cout << "El canal está vacío.\n";<br>
<br>
<br>
Espero que esto aclare el tema.</blockquote><div><br>Gracias Steven por aclararnos ese asunto.<br><br>Personalmente creo que me quedaré con la instrucción de ignore, auqneu supongo que en algún momento necesitaré de la otra instrucción.<br>
<br>Solamente me queda la duda de por qué hay veces que se necesita una instrucción 'cin.get()' y otras veces se necesitan 2.<br><br>He visto programas muy pero muy parecidos al programa del compañero luchito, en los cuales sólo es necesaria una instrucción 'cin.get'.<br>
<br>Espero que me puedas ayudar con mi duda.<br></div></div>