我正在为个人项目编写C ++ CSV类,但偶然发现了一个奇怪的错误。在我的测试程序中,我有代码:
for( int i = 0; i < 3; ++i ) {
std::cout << i << ": ";
std::vector<std::string> results = test.get_row();
for( auto it = results.begin(); it != results.end(); ++it ) {
std::cout << *it << " ";
}
std::cout << std::endl;
}
得到结果:
: row0 row1 row2
: blah0 blah1 blah2
2: blah3 blah4 blah5
但我应该得到:
0: row0 row1 row2
1: blah0 blah1 blah2
2: blah3 blah4 blah5
关于为什么我在前两次运行中没有获得i
值的任何想法?
注意:我正在使用g ++ 4.4.7
答案 0 :(得分:7)
阿。我想我明白了:
您似乎忘记从输入中删除换行符。
这会导致最后一列的尾部为'\ r',并且由于始终添加'',此空格将覆盖最初打印的i
。
在拆分列值之前从输入中删除换行符:)