2015-04-01 57 views
0

我有我的C++程序的問題。我重新格式化並顯示用戶輸入到控制檯的單詞。如果用戶輸入:嗨,我是bob。用戶在進入控制檯進入bob後按回車。我將重新格式化並以新格式重新打印。問題是我不想顯示更多輸入消息,直到輸入該控制檯行上的所有單詞。當前循環我在每個單詞後顯示輸入請求,或根本不顯示。這取決於我是否包含提示或不提示。我需要做一個while循環處理每個單詞並輸出它,並在最後一個單詞後停下來。什麼是布爾參數呢?我包括我的代碼以供參考。C++中,直到沒有更多的輸入使用while循環時輸入

int _tmain(int argc, _TCHAR* argv[]) 
{ 

    int b; 
    string input; 
    string output ; 
    int check = 1; 

    while (check){ 
     cout << "Enter in one or more words to be output in ROT13: " << endl; 
     cin >> input; 
     while(my issue is here){ 

      const char *word = input.c_str(); 

      for (int i = 0; i < input.length(); i++){ 

       b = (int)word[i]; 
       if (b > 96){ 
        if (b >= 110){ 
         b = b - 13; 
        } 
        else { 
         b = b + 13; 
        } 

        output += ((char)b); 
       } 

       else 
       { 
        if (b >= 78){ 
         b = b - 13; 
        } 
        else { 
         b = b + 13; 
        } 

        output += ((char)b); 
       } 







      } 
      cout << output << endl; 
      output = ""; 
      cin >> input; 

     } 

      check = 0; 

    } 

    return 0; 
} 

回答

4

可以更換整個while循環這一行:

std::getline(std::cin, input); // where input is a std::string 

然後將此行後做了格式化。

0

如果沒有更多行輸入,cin函數將返回false。您可以執行以下操作直至輸入結束,或者如果您正在重定向cin以從文件中讀取,則可以執行以下操作。

int a; 
while(cin >> a){ 
    //Your loop body 
} 
+0

@NeilKirk我從來沒有說過while(eof) – 2015-04-01 01:24:26

+0

我說「直到輸入結束」或「eof」 – 2015-04-01 01:28:21

+0

你可以做freopen(「filename」,「r」,m stdin);重定向輸入。 – 2015-04-01 01:29:13