Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/03/2011, 10:38
fragNatic
 
Fecha de Ingreso: octubre-2008
Mensajes: 43
Antigüedad: 15 años, 7 meses
Puntos: 0
Leer cadena de texto C++

Se que es un tema recurrente pero por más que me harté de buscar en la web, no encontré nada que me valiera.

Mi problema es el típico, se quedan carácteres en el buffer y no consigo eliminarlos para la siguiente lectura.

Yo lo que quiero hacer es leer la entrada en un char* de 20, para ello lo hago con getLine():

Código C++:
Ver original
  1. char* leer = (char*) malloc(sizeof(char)*20);
  2. cout << "Mete una frase: ";
  3. cin.getline(leer,20);

La idea es que si no caben, detectarlo con cin.fail, limpiar el buffer y que me lo vuelva a pedir, para ello:
Código C++:
Ver original
  1. char* leer = (char*) malloc(sizeof(char)*20);
  2. cout << "Mete una frase: ";
  3. cin.getline(leer,20);
  4.     while (cin.fail()){
  5.         cin.ignore(100,'\n');
  6.         cin.clear();
  7.         cout << "La frase no cabe, vuelve a meterla";
  8.         cin.getline(leer,20);
  9.      }

El caso es que no funciona de ninguna manera, ni con lo que pude encontrar por ahí.

También me valdría otro comportamiento, y es que simplemente se quede con lo que quepa y el resto se descarte para que la siguiente lectura sea limpia.

Gracias a todos