C ++ lectura en segmentos específicos de los datos de un archivo redirigido a mi programa
Pregunta
Estoy trabajando en un programa que toma un archivo redirigido como entrada. Por ejemplo, si mi programa fue llamado foo yo llamaría el programa con ./foo < input.txt
. Los archivos que estoy corriendo a través de mi programa se supone que deben ser formateado con un solo entero en la primera línea, dos enteros en la segunda línea. Así que algo como
3
1 8
Estoy encontrando que algunos de los archivos tienen caracteres extraños, aunque en la primera línea que tengo que ignorar. Algo así como
3 t
1 8
Yo estaba leyendo en los datos con sólo hacer cin >> var >> var 2 >> var3;
pero cuando eso t adicional se tira en el que mezclo tornillos todo. ¿Cuál sería la mejor manera de trabajar alrededor de este problema? ¿Hay alguna manera de que después de la primera variable CIN diga que saltarse el resto de la línea? O debería utilizar la función getline
y luego analizar de alguna manera eso? Gracias.
Solución
Si el archivo es de la forma
[number] garbage
[number] [number] garbage
y sabes que los números son siempre en la posición correcta en la línea, a continuación, que haría uso de std::getline()
para leer cada línea a continuación, intentar leer el número esperado de números enteros de cada línea que se lee.
Otros consejos
Sí, la manera obvia sería utilizar std::getline
para leer una línea de texto, utilice el std::string
se obtiene a partir de ese inicializar un std::istringstream
, leer el número correcto de artículos de esa línea, y repetir según sea necesario.