[C con Clase] vaciar la entrada std

srd4121 en njit.edu srd4121 en njit.edu
Mie Dic 17 17:28:43 CET 2008


Hola Nuria,

Mensaje citado por: Núria Busom Figueres <meteorit666 en hotmail.com>:

> 
> 
> Muchas gracia por la explicación, pero me sigue sin funcionar, a ver
> pongo codigo:
> 

[CORTE]

> entonces mi problema es que (por ej: declaro Sn[3] y St[2]) si cuando
> introducen Sn (mayúsculas), se equivocan y escriben ABCd, la 4º letra q
> ya no cabe en Sn y ad+ es una minuscula, me la pone en St. Lo que quiero
> es vaciar la entrada para q esto no pase.
> 

Bien. Creo que ya tengo la solución. Tienes que desactivar la sincronización 
entre los objetos estándares de <iostream> (cin, cout, cerr, y clog) y sus 
homólogos de las bibliotecas estándares de ANSI C. Esto se consigue con la 
función miembro estática 'ios_base::sync_with_stdio()'. Sugiero hacer esto al 
comienzo del programa:

#include <iostream>

using namespace std;

int main()
{
  ios::sync_with_stdio( false );

  char letras1[3];
  letras1[0] = cin.get();
  letras1[1] = cin.get();
  letras1[2] = cin.get();

  cin.ignore( cin.rdbuf()->in_avail(), '\n' );

  char letras2[2];
  letras2[0] = cin.get();
  letras2[1] = cin.get();

  return 0;
}


Espero que esto te sirva.

Steven





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