在我做一个非常简单的编程练习之前,我对输入结束字符有疑问。我写了这个程序来检查文本中是否有两个单词重复:
string previous = ""; //initalized to "not a word"
string current; //current word
while (cin >> current) { //input operation
if (previous == current) // check if the word is the same as last
cout << "repetead words : " << current << '\n';
previous = current;
}
cout << previous << "\n" << current << "\n";
我的书说,如果我想终止输入操作并掉出while循环,我必须插入输入结束字符,但是,如果我在输入单词的同一行插入该字符,我会不会掉出循环。只要我把它插入换行就可以了。为什么?我必须在换行符上插入输入结束字符才能使其正常工作?
答案 0 :(得分:-1)
std::cin::operator>>
会在到达流末尾时返回false而不是对std::cin
的另一个引用。传递单个 eof 是一种表示流末尾的方式。
当std::cin
仅解析 eof 时,它会专门解释它而不是在流中考虑更多数据。如果它与 eof 一起解析任何数据,它只会考虑流中的数据。