[C con Clase] (sin asunto)

David Reza l.fix3r.l en gmail.com
Vie Mayo 16 06:42:36 CEST 2008


Steven Davidson escribió:

>
> La función miembro 'get()' recoge y extrae el siguiente carácter en el
> canal de entrada. En el código de Luchito, necesitamos extraer el
> carácter '\n' debido a la cadena entrante que representa un número; esto
> es,
>
> cout<<"ingrese fac2  ";   cin>>m;
>
> El carácter '\n' queda en el búfer y por tanto tenemos que eliminarlo.
> Esto se puede hacer fácilmente con 'get()'.
>
> Podéis usar otro método que es la función miembro 'ignore()'. Por
> defecto, ignora y extrae 1 solo carácter, pero podemos indicar la
> cantidad si queremos. Esto es,
>
> cin.ignore( 100 );  // Ignora los 100 primeros caracteres en el canal
>
>
> Una función auxiliar es consultar la cantidad de caracteres en el canal
> a través de la función miembro 'in_avail()' de la clase 'streambuf'. Los
> canales internamente tienen un objeto polimórfico de la jerarquía
> 'streambuf'. Podemos acceder a tal objeto a través de la funcidn miembro
> 'rdbuf()'. Al final, haríamos lo siguiente:
>
> ios::streamsize nCant = cin.rdbuf->in_avail();
> if( nCant > 0 )
>   cout << "Existen " << nCant << " caracteres en el canal\n";
> else
>   cout << "El canal está vacío.\n";
>
>
> Espero que esto aclare el tema.


Gracias Steven por aclararnos ese asunto.

Personalmente creo que me quedaré con la instrucción de ignore, auqneu
supongo que en algún momento necesitaré de la otra instrucción.

Solamente me queda la duda de por qué hay veces que se necesita una
instrucción 'cin.get()' y otras veces se necesitan 2.

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'.

Espero que me puedas ayudar con mi duda.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20080515/2253e601/attachment.html>


Más información sobre la lista de distribución Cconclase