![](/img/trans.png)
[英]'Try This' exercise on Programming Principles and Practice Using C++, For iteration
[英]Programming - Principles and Practice using C++ - Chapter 3 Try this exercise - Repeated word detection
嗨,我遵循Bjarne Stroustrup的“編程-使用C ++的原理和實踐”,並且在第3章中進行“重復單詞檢測程序”,“嘗試此”練習,在低估以下代碼方面有些困難:
int main()
{
string previous = " "; // previous initialised as white space
string current; // assign string varibable as current
while(cin>>current) // read a stream of words
{
if (previous == current) // check if word is the same as last
{
cout << "repeated word: " << current << "\n";
}
previous = current;
}
}
我不明白為什么程序在重復兩個單詞時不立即顯示在屏幕上,而僅在您按Enter鍵時才重復打印。 如果有人可以解釋這一點,我將非常感謝!
嗯,這就是cin的工作方式。
Cin讀取第一個單詞,但僅在檢測到“ \\ n”時返回。 這就是您按“ Enter”鍵時發生的情況。 這意味着您可以編寫任意數量的文字,但是如果您不按“ enter”,cin不會停止閱讀。
cin以及所有這些機制的工作原理還有更多,但我認為足以讓您開始。 嘗試閱讀更多的章節!
編輯:為了清楚起見,更改了詞語。 在下面的評論中查看@Jaka Konda示例。
在您的while
循環中cin
被評估為bool
, cin
將讀取chars(空格將被跳過),直到找到新行,這將觸發將某些標志設置為false
,因此在下一次迭代中cin
將被評估為false
並且循環將停止。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.