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;
}
C++ を使用して .csv ファイルを読み取り、別の形式で出力する方法と同様に、ostream の operator<< をオーバーロードすることは可能ですか? フィールドを空白にできるのはいつですか? それはパフォーマンスを改善しますか?
または、これをより高速に実行するために他にできることはありますか? ありがとう