Форматируется чтение файла данных C ++ - PullRequest
0 голосов
/ 20 декабря 2011

У меня есть данные в следующем формате в файле ( p1, p2 ) (p3, p4 ) ( p5, p6 )

Как мне прочитать это в C ++, я могу прочитать строку и разобрать ее, но я искал какой-то C++ stl способ чтения такого формата.

1 Ответ

2 голосов
/ 20 декабря 2011

Это зависит от формата, который вы хотите представить данные в вашей программе. Один из способов - получить struct с пользовательским оператором извлечения потока:

struct Data {
    int val1; // just assuming int for the data-type
    int val2;
};

std::istream & operator>>(std::istream& input, Data & obj) {
    input.ignore(2, '('); // skip all including opening brace
    input >> obj.val1;
    input.ignore(2, ','); // skip comma
    input >> obj.val2;
    input.ignore(2, ')'); // skip closing brace
    return input;
}

Как @Seth Carnegie демонстрирует в ответе на аналогичный вопрос , вы также можете использовать INT_MAX, чтобы убедиться, что вы пропустили достаточно - однако, использование std::numeric_limits<std::streamsize>::max() было бы еще лучше.

Затем вы можете прочитать все содержимое файла следующим образом:

std::vector<Data> all_data;
std::ifstream input_file("your_file.txt");
std::copy(std::istream_iterator<Data>(input_file), 
          std::istream_iterator<Data>(),
          std::back_inserter(all_data));

Здесь - полный рабочий пример.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...