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.