C ++ чтение в определенных сегментах данных из файла, перенаправленного в мою программу - PullRequest
0 голосов
/ 27 сентября 2010

Я работаю над программой, которая принимает перенаправленный файл в качестве входных данных. Например, если бы моя программа называлась foo, я бы назвал программу с ./foo < input.txt. Файлы, которые я запускаю в моей программе, должны быть отформатированы одним целым числом в первой строке и двумя целыми числами во второй строке. Так что-то вроде

3
1 8

Я обнаружил, что некоторые файлы имеют посторонние символы, хотя в первой строке их нужно игнорировать. Что-то вроде

3 t
1 8

Я читал данные, просто делая cin >> var >> var 2 >> var3;, но когда этот лишний т был добавлен в смесь, он все испортил. Как лучше обойти эту проблему? Есть ли способ, как после того, как я сгенерировал первую переменную, сказать ей пропустить оставшуюся часть строки? Или я бы использовал функцию getline, а затем каким-то образом ее проанализировал? Благодаря.

Ответы [ 2 ]

1 голос
/ 27 сентября 2010

Да, очевидным способом было бы использовать std::getline для чтения строки текста, использовать std::string, полученный из этого, для инициализации std::istringstream, прочитать правильное количество элементов из этой строки и повторитьпо мере необходимости.

1 голос
/ 27 сентября 2010

Если файл имеет форму

[number] garbage
[number] [number] garbage

и вы знаете, что числа всегда находятся в правильном положении в строке, тогда я буду использовать std::getline() для чтения каждой строки, а затем попытаюсь прочитать ожидаемое количество целых чисел в каждой строке, которую вы прочитали.

...