在 C++ 中读取分隔文件[重复]
-
21-08-2019 - |
题
这个问题在这里已经有答案了:
- 如何用 C++ 读取和解析 CSV 文件? 33 个答案
在 C++ 中读取制表符分隔文件并将每一行存储为记录的最佳方法是什么?我一直在寻找一个开源库来帮助解决这个问题,但没有成功,所以看来我必须编写自己的库。
解决方案
typedef vector<vector<string> > Rows;
Rows rows;
ifstream input("filename.csv");
char const row_delim = '\n';
char const field_delim = '\t';
for (string row; getline(input, row, row_delim); ) {
rows.push_back(Rows::value_type());
istringstream ss(row);
for (string field; getline(ss, field, field_delim); ) {
rows.back().push_back(field);
}
}
这将帮助您开始。它不会检查每行是否具有相同数量的字段,允许转义 field_delim
, , ETC。
其他提示
使用 iostreams 没有问题 - 您可以使用 getline 将每一行读取到字符串中,然后在该字符串上使用 stringstream 来迭代字段。
维基百科的文章中列出了一些库 CSV_application_support.
不隶属于 StackOverflow