Чтение C ++ в определенных сегментах данных из файла, перенаправленного в мою программу

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

  •  25-09-2019
  •  | 
  •  

Вопрос

Я работаю над программой, которая принимает перенаправленный файл в качестве ввода. Например, если моя программа была названа 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, Прочитайте правильное количество предметов из этой линии и повторите по мере необходимости.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top