2011-10-24 27 views
5

Tengo un archivo de texto como este:de lectura hasta el final de una línea en C++

Sting Otra cadena 0 12 0 5 3 8
Sting Otra cadena de 8 13 2 0 6 11

Y quiero contar cuántos números hay. Creo que mi mejor opción es usar mientras escribo ciclo con una condición para finalizar el conteo, luego comienza otra línea, pero no sé cómo dejar de leer al final de una línea.

Gracias por su ayuda de antemano;)

+1

¿Qué tienes hasta ahora? –

Respuesta

11

Divida su flujo input en líneas

std::string line; 
while (std::getline(input, line)) 
{ 
    // process each line here 
} 

Para dividir una línea en palabras, utilizar un stringstream:

std::istringstream linestream(line); // #include <sstream> 
std::string word; 
while (linestream >> word) 
{ 
    // process word 
} 

Usted puede repetir esta operación para cada palabra para decidir si contiene un número. Dado que no se especificó si sus números son números enteros o no enteros, supongo int:

std::istringstream wordstream(word); 
int number; 
if (wordstream >> number) 
{ 
    // process the number (count, store or whatever) 
} 

responsabilidad: Este enfoque no es perfecto. Detectará "números" al comienzo de las palabras como 123abc, también permitirá un formato de entrada como string 123 string. Además, este enfoque no es muy eficiente.

1

final de línea está representado por el carácter '\ n'. Ponga una condición en su ciclo while para finalizar cuando encuentre '\ n'

4

¿Por qué no usa un getline()?

Cuestiones relacionadas