3

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

4

1 回答 1

7

啊。我想我看到了:

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

这将导致最后一列有一个尾随 '\r',并且由于您总是添加一个 '',因此该空格将覆盖最初打印的i.

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

于 2013-09-04T21:29:23.907 回答