5

我在 while 循环中使用 std::getline 并使用 cout 打印输出,我发现在打印时我的行的开头被切断了:

按预期工作:

std::string line;
while(std::getline(csv, line)) {
 std::cout << line << std::endl
}

没有按预期工作,将前两个字符从我的行中删除

std::string line;
while(std::getline(csv, line)) {
 std::cout << line << "  " << std::endl
}

我以前从未注意到这种行为,为什么现在会发生这种情况?

4

1 回答 1

1

这似乎正在发生:字符串
末尾的line字符包含carriage return字符。如果您的字符串是Hello World,则将其与回车一起打印会导致光标返回该H字符。这意味着当您在那之后开始打印任何内容时,它将覆盖您的旧字符串。
为避免这种情况,您可能需要先打印endl

于 2013-03-02T07:11:10.140 回答