Чтение C ++ в определенных сегментах данных из файла, перенаправленного в мою программу
Вопрос
Я работаю над программой, которая принимает перенаправленный файл в качестве ввода. Например, если моя программа была названа Foo, я бы позвонил в программу с ./foo < input.txt
. Отказ Файлы, которые я прохожу через мою программу, должен быть отформатирован с одним целым числом на первой строке, два целых числа на второй строке. Так что-то вроде
3
1 8
Я обнаруживаю, что некоторые из файлов имеют посторонние символы, хотя на первой строке, которую мне нужно игнорировать. Что-то типа
3 t
1 8
Я читал в данные, просто делая cin >> var >> var 2 >> var3;
Но когда этот дополнительный T будет брошен в смесь, все это винт. Что было бы лучшим способом работы по этой проблеме? Есть ли способ после того, как я Cin, первая переменная, чтобы пропустить остальную часть линии? Или я бы использовать getline
Функция, а потом как-то разобрать? Спасибо.
Решение
Если файл имеет форму
[number] garbage
[number] [number] garbage
И вы знаете, что номера всегда в правильном положении на линии, то я бы использовал std::getline()
Чтобы прочитать каждую строку, затем попытаться прочитать ожидаемое количество целых чисел от каждой строки, которую вы прочитали.
Другие советы
Да, очевидный способ быть использован std::getline
Чтобы прочитать линию текста, используйте std::string
Вы получаете от этого, чтобы инициализировать std::istringstream
, Прочитайте правильное количество предметов из этой линии и повторите по мере необходимости.