问题描述
我有一个包含两行的 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 (将#修改为@)