【发布时间】:2019-12-10 20:45:50
【问题描述】:
我在将 getline 中的字符串与 cout 中的其他字符串组合时遇到问题,我一直在寻找答案,但找不到任何有类似问题的人。我的代码是:
file.open ("list.txt");
getline(file, line);
int i=0;
do
{
getline(file, line);
dummyStudent.name = line;
cout << "Is " << flush << dummyStudent.name << flush << " present?" << endl;
students.push_back(dummyStudent);
i++;
}
while(!file.eof());
file.close();
输出应该是:
Is student present?
但是我得到了:
present?udent
循环的最后一次迭代显示正确的文本。
【问题讨论】:
-
我相信这是你的问题 - stackoverflow.com/questions/2129230/…
-
@Kai 看起来不像。
cout语句中的所有内容都是相互独立的,因此这里不应该有 UB,因为这里有序列点。 -
可能是因为除了最后一行之外的每一行末尾都有回车符 (
\r)? -
你能检查
getline的结果,看看是不是false?
标签: c++ c++11 visual-c++ c++14