Leitura de C ++ em segmentos específicos de dados de um arquivo redirecionado para o meu programa
Pergunta
Estou trabalhando em um programa que pega um arquivo redirecionado como entrada. Por exemplo, se meu programa fosse chamado Foo, eu chamaria o programa com ./foo < input.txt
. Os arquivos que estou executando através do meu programa devem ser formatados com um único número inteiro na primeira linha, dois números inteiros na segunda linha. Então, algo como
3
1 8
Estou descobrindo que alguns dos arquivos têm caracteres estranhos na primeira linha que eu preciso ignorar. Algo como
3 t
1 8
Eu estava lendo nos dados apenas fazendo cin >> var >> var 2 >> var3;
Mas quando esse T extra é jogado na mistura, ele estraga tudo. Qual seria a melhor maneira de resolver esse problema? Existe alguma maneira de depois que eu me torne a primeira variável, diga para pular o resto da linha? Ou eu usaria o getline
funcionar e então de alguma forma analisar isso? Obrigado.
Solução
Se o arquivo for do formulário
[number] garbage
[number] [number] garbage
E você sabe que os números estão sempre na posição correta na linha, então eu usaria std::getline()
Para ler cada linha, tente ler o número esperado de números inteiros de cada linha que você lê.
Outras dicas
Sim, a maneira óbvia seria usar std::getline
Para ler uma linha de texto, use o std::string
você recebe disso para inicializar um std::istringstream
, leia o número correto de itens dessa linha e repita conforme necessário.