Foros del Web » Programación para mayores de 30 ;) » Programación General »

Leer cadena de texto C++

Estas en el tema de Leer cadena de texto C++ en el foro de Programación General en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 03/03/2011, 10:38
 
Fecha de Ingreso: octubre-2008
Mensajes: 43
Antigüedad: 15 años, 6 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

Etiquetas: cadenas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:18.