2017-09-27 61 views
1

我想繼續閱讀Stroustrup PPUC++,但我卡住了!幾天前我寫了一個BleepOutTheBadWords程序,它工作。我試圖在幾天前和我的弟弟寫程序,但我失敗了。這本質上是我寫的一個程序,用來確定哪裏出了問題。它不打印出「句子」向量中的每個單詞。C++ Xcode不會運行我的for循環(很短)

#include <iostream> 
#include "std_lib_facilities.h" // Stroustrup header file 
using namespace std; 

int main() 
{ 
    cout << "Write a sentence." << endl; 

    vector<string> sentence; 

    // Put user input into "sentence" vector 
    for (string word; cin >> word;) 
     sentence.push_back(word); 

    // Print each word in "sentence" vector 
    for (int i = 0; i < sentence.size(); ++i) 
     cout << sentence[i] << endl; 

    // Keep window open and return 0 to show program succeeded  
    keep_window_open(); 
    return 0; 
} 

答案很明顯。如果你真的很好,請說明一下。在發佈之前,我瀏覽了兩個不同頁面上的建議讀物。

+1

什麼是「我失敗了」?問一個具體的問題。 –

+1

如果很明顯,你不需要問這個問題。你的問題應該包含所需的行爲和實際行爲。 「失敗」的含義是什麼? – user463035818

回答

3

的XCode將無法運行我的for循環

你的循環運行。你錯過的東西是如何終止循環。當cin >> word計算結果爲false

for (string word; cin >> word;)

這個循環將終止。通常,即沒有錯誤條件,當您的輸入完成時,它將評估爲錯誤。信號流結束的確切過程或EOF與平臺有關。如果你在OSX上運行這個程序,那麼除非你改變鍵盤的默認配置,否則發信號通知EOF的最常見方法是點擊Ctrl + D按鈕。一旦您發出EOF信號,此輸入循環將終止,您將能夠看到輸出。

我非常確定Stroustrup在他的書中討論過這個問題(儘管我不能提及確切的頁碼)。然而,他的書的「第10章:輸入和輸出流」詳細介紹了這些內容。

+0

非常感謝。當我的輸入完成時,我只希望cin >>字自動評估爲false,因爲我幾天前不必發出EOF信號。 –

+0

它如何自動評估爲false?它如何知道你的輸入結束了?它無法讀懂你的想法。幾天前,您可能已經使用了'getline',該行結束於行末,即按下回車鍵後。但'cin >> word'不會以新行結束。所以你必須告訴它你已經完成了輸入。 – taskinoor