输入结束字符不起作用

时间:2014-09-28 16:31:39

标签: c++

在我做一个非常简单的编程练习之前,我对输入结束字符有疑问。我写了这个程序来检查文本中是否有两个单词重复:

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循环,我必须插入输入结束字符,但是,如果我在输入单词的同一行插入该字符,我会不会掉出循环。只要我把它插入换行就可以了。为什么?我必须在换行符上插入输入结束字符才能使其正常工作?

1 个答案:

答案 0 :(得分:-1)

std::cin::operator>>会在到达流末尾时返回false而不是对std::cin的另一个引用。传递单个 eof 是一种表示流末尾的方式。

std::cin仅解析 eof 时,它会专门解释它而不是在流中考虑更多数据。如果它与 eof 一起解析任何数据,它只会考虑流中的数据。