C ++ lectura en segmentos específicos de los datos de un archivo redirigido a mi programa

StackOverflow https://stackoverflow.com/questions/3805362

  •  25-09-2019
  •  | 
  •  

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.

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top