簡體   English   中英

編程-使用C ++的原理和實踐-第3章嘗試本練習-重復單詞檢測

[英]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被評估為boolcin將讀取chars(空格將被跳過),直到找到新行,這將觸發將某些標志設置為false ,因此在下一次迭代中cin將被評估為false並且循環將停止。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM