如何解决C++:尝试解析 csv 文件,但无法让 stringstream 正常工作
我有一个包含两行的 csv 文件。第一行是列名。第二行是数据。输入文件如下所示。
This is column 1.,This is column 2.,This is column 3.,John,15,3.2
这是代码。
#include <fstream>
#include <iostream>
#include <string>
#include <sstream>
int main()
{
std::ifstream iFile("input_file.csv");
if (!iFile.is_open())
throw std::runtime_error("Could not open file");
if (iFile.good())
{
std::string line;
std::getline(iFile,line);
std::stringstream ss(line);
std::string column_name;
while (std::getline(ss,column_name,','))
{
std::cout << column_name << std::endl;
}
std::getline(iFile,line);
std::cout << "line= " << line << std::endl;
ss.str(line);
std::string name;
std::getline(ss,name,');
std::cout << "name= " << name << std::endl;
}
iFile.close();
}
对于上面的代码,column_name 打印正确。第二行也是正确的。但是,名称打印错误。
根据我的测试,ss.str(line);
不起作用。我必须使用另一个字符串流。
std::stringstream ss1(line);
std::string name;
std::getline(ss1,');
然后就可以了,但我想知道为什么,因为在我的其他代码中它运行良好(如下)。
std::string line = "nick,22,1.57";
std::stringstream ss(line);
std::string name;
std::getline(ss,');
std::cout << name << std::endl;
line = "john,23,1.76";
ss.str(line);
std::getline(ss,');
std::cout << name << std::endl;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。