格式化读取文件数据的c++
Formatted reading a file data C++
我在文件中有以下格式的数据( 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));
相关文章:
- 防止主数据类型C++的隐式转换
- 用于访问容器<T>数据成员的正确 API
- 嵌套在类中时无法设置成员数据
- 使用流处理接收到的数据
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 在cuda线程之间共享大量常量数据
- C++将文本文件中的数据读取到结构数组中
- 如何在C++中序列化结构数据
- 在C++中打印指向不同基元数据类型的指针的内存地址
- 通过套接字[TCP]传输数据 如何在C / C ++中打包多个整数并使用send() recv()传输数据
- 在c代码之间共享数据的最佳方式
- 链表,反向函数,数据结构
- 数据成员SFINAE的C++17测试:gcc vs clang
- C++浮点数据类型和字符串数据类型无法子到模板函数中
- 如何对点云数据进行排序
- 从矢量<无符号字符>转换为字符* 包括垃圾数据
- 尝试通过OCI例程从Oracle获取blob数据,但出现错误:ORA-01008:并非所有变量都绑定
- Cuda C++:设备上的Malloc类,并用来自主机的数据填充它
- 在运行时处理类型擦除的数据-如何不重新发明轮子