用C ++读取分隔文件

时间:2009-07-02 17:36:45

标签: c++ open-source tab-delimited-text

在C ++中读取制表符分隔文件并将每行存储为记录的最佳方法是什么?我一直在寻找一个开源库来帮助解决这个问题,但是一直没有成功,所以看起来我必须自己编写。

3 个答案:

答案 0 :(得分:17)

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等。

答案 1 :(得分:5)

使用iostreams没有问题 - 您可以使用getline读取每一行到字符串,然后在该字符串上使用stringstream来迭代字段。

答案 2 :(得分:0)

维基百科的文章CSV_application_support中列出了一些库。