我在文件中有以下格式的数据
( p1, p2 ) (p3, p4 ) ( p5, p6 )
我如何在C ++中阅读本文,我可以阅读一行并解析它,但我正在寻找一些C++ stl
方式来阅读这种格式。
答案 0 :(得分:2)
这取决于您要在程序中表示数据的格式。一种方法是使用自定义流提取运算符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在answer to a similar question中演示的那样,您也可以使用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));
Here是一个完整的工作示例。