【问题标题】:C++: How to read csv file with newline and comma delimitedC++:如何读取带有换行符和逗号分隔的 csv 文件
【发布时间】:2020-09-09 04:23:26
【问题描述】:

我知道有人问过这个问题。 但我找不到适合我的情况的解决方案。 我有一个文件如下:

4 
apple,banana,cat,donkey

我想要的输出是这样的:

apple|banana|cat|donkey|

还有我的代码:

ifstream infile;
infile.open("file1.txt");

int num;
string line;
infile >> num;
infile >> line;
size_t pos = 0;
vector<string>data;
string a;
while ((pos = line.find(",")) != string::npos){
   a = line.substr(0, pos);
   data.push_back(a);
   line.erase(0, pos + (",".length()));
}
for (auto x: data)
   cout << x << "|";

通过找到逗号,我设法阅读了前 3 个项目,但未能阅读最后一个(驴)。如何使用类似的方法检测换行符,最好不使用 getline?当我使用换行符作为分隔符时它失败了。

【问题讨论】:

    标签: c++ csv file


    【解决方案1】:

    在循环后添加条件

    if (!line.empty())
      data.push_back(line);
    

    这会将最后一个逗号后的尾部添加到向量中。

    当您从ifile &gt;&gt; line; 等输入流中读取字符串时,新行不会放在行尾。

    【讨论】:

    • 非常感谢!我误解了这个概念,现在我清楚了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-07
    • 2020-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多