una txt salto por linea libreria leer especifica ejemplos descargar archivos archivo c++ string input stream istream

txt - leer una linea especifica de un archivo en c++



¿Cómo detectar líneas vacías mientras se lee el objeto istream en C++? (2)

¿Cómo puedo detectar si una línea está vacía?

Yo tengo:

1 2 3 4 5

Estoy leyendo esto con istream r así que:

int n; r >> n

Quiero saber cuándo alcanzo el espacio entre 4 y 5. Intenté leer como char y usar .peek () para detectar / n pero esto detecta el / n que va después del número 1. La traducción de la entrada anterior es: 1 / n2 / n3 / n4 / n / n5 / n si estoy en lo correcto ...

Como voy a manipular las entradas, prefiero leerlas como si fueran ints que usar getline y luego convertirlas a int ...


Si realmente no quieres usar getline, este código funciona.

#include <iostream> using namespace std; int main() { int x; while (!cin.eof()) { cin >> x; cout << "Number: " << x << endl; char c1 = cin.get(); char c2 = cin.peek(); if (c2 == ''/n'') { cout << "There is a line" << endl; } } }

Pero ten en cuenta que esto no es portátil. Cuando usa un sistema que tiene caracteres de líneas finales diferentes a ''/ n'', entonces sería un problema. Considere leer líneas enteras y luego extraer datos de ella.


Podría verse así:

#include <iostream> #include <sstream> using namespace std; int main() { istringstream is("1/n2/n3/n4/n/n5/n"); string s; while (getline(is, s)) { if (s.empty()) { cout << "Empty line." << endl; } else { istringstream tmp(s); int n; tmp >> n; cout << n << '' ''; } } cout << "Done." << endl; return 0; }

salida:

1 2 3 4 Empty line. 5 Done.

Espero que esto ayude.