我正在尝试编写一个读取 CSV 文件的程序(无需担心转义任何内容,它的格式严格没有引号),但任何值为 0 的数字项都留空。所以一条正常的线看起来像:
12,string1,string2,3,,,string3,4.5
代替
12,string1,string2,3,0,0,string3,4.5
我有一些使用向量的工作代码,但它太慢了。
int main(int argc, char** argv)
{
string filename("path\\to\\file.csv");
string outname("path\\to\\outfile.csv");
ifstream infile(filename.c_str());
if(!infile)
{
cerr << "Couldn't open file " << filename.c_str();
return 1;
}
vector<vector<string>> records;
string line;
while( getline(infile, line) )
{
vector<string> row;
string item;
istringstream ss(line);
while(getline(ss, item, ','))
{
row.push_back(item);
}
records.push_back(row);
}
return 0;
}
是否可以重载 ostream 的 operator<<,类似于如何使用 C++ 读取 .csv 文件并以另一种形式输出?什么时候字段可以为空?那会提高性能吗?
或者我还能做些什么来让它运行得更快?谢谢