格式化读取文件数据的c++

Formatted reading a file data C++

本文关键字:c++ 数据 文件 读取 格式化      更新时间:2023-10-16

我在文件中有以下格式的数据( p1, p2 ) (p3, p4 ) ( p5, p6 )

我如何在c++中读取这个,我可以读取一行并解析它,但我正在寻找一些C++ stl方式来读取这种格式。

这取决于您希望在程序中表示数据的格式。一种方法是使用自定义流提取操作符的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));