变量不在迭代上打印

时间:2013-09-04 21:25:18

标签: c++11

我正在为个人项目编写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

1 个答案:

答案 0 :(得分:7)

阿。我想我明白了:

您似乎忘记从输入中删除换行符。

这会导致最后一列的尾部为'\ r',并且由于始终添加'',此空格将覆盖最初打印的i

在拆分列值之前从输入中删除换行符:)