2011-04-30 100 views
1

我正在做一個簡單的程序,它由一個while循環組成,它讀入兩個整數,然後將它們打印出來。我的問題是,如何在用戶輸入caracter「|」時退出程序?下面是這個小超簡單的程序:如何在用戶輸入特殊字符時退出程序

int main() 
{ 
    int var1 = 0; 
    int var2 = 0; 

    while(cin>>var1>>var2) 
    { 
     cout << var1 << " " << var2 << endl; 
    } 

    return 0; 
} 

我知道,你可以定義一個參數,它正是我想要做的函數getline,但我不知道如何在一個while循環實現這一點。謝謝您的幫助。

+0

你問在var1或var2(讀取後)如何終止循環包含管道字符?我懷疑不是 - 也許用更詳細的例子輸入來描述你想要的。 – 2011-04-30 23:13:22

回答

3

只要有人輸入某個istream不能將< <變成一個整數,您的循環已經退出。反正在具體退出|,我會使用防窺視功能,像這樣:

int main() 
{  
    int var1 = 0;  
    int var2 = 0; 
    while(cin.good()) 
    { 
    char c; 
    c = cin.peek(); 

    if(c == |) 
     break; 
    else 
    { 
     cin >> var1 >> var2; 
     cout << var1 << " " << var2 << endl; 
    } 
    } 

    return 0; 
} 

它避免使用C語言風格的輸入或複雜的行解析。

+0

非常感謝您的回答!但是,當我在我的編譯器中輸入這個錯誤時:錯誤C3867:'std :: ios_base :: good':函數調用缺少參數列表;使用'&std :: ios_base :: good'來創建一個指向成員和致命錯誤的指針C1903:無法從以前的錯誤中恢復 – Raphael 2011-04-30 23:38:19

+0

你有沒有試過編譯過? – 2011-04-30 23:43:31

+0

@bobiscool cin.good是一個函數,應該是cin.good()。對不起,我把它寫在了我的頭頂。我現在無法訪問編譯器:),現在我將更改我的原始文章 – 2011-04-30 23:44:50

0

您只需檢查輸入的值是否爲|在if塊中,然後使用break關鍵字來停止循環。

東西在這樣的臺詞:

#include <stdio.h> 
int main() { 
    char c; 
    for(;;) { 
     printf("\nPress any key, Q to quit: "); 

     // Convert to character value 
     scanf("%c", &c); 
     if (c == 'Q') 
      break; 
    } 
} // Loop exits only when 'Q' is pressed 
0

書面,你會如果用戶輸入|退出循環。或 其他任何不能被解釋爲int(跳過空白的 之後)。

如果您想要更精確的控制,您必須通過 行(並解析行)或逐個字符(並將值修改爲 )讀取行。