Leitura de C ++ em segmentos específicos de dados de um arquivo redirecionado para o meu programa

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

  •  25-09-2019
  •  | 
  •  

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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top