2012-02-04 61 views
0

說我有:指定CIN值(C++)

int lol; 
cout << "enter a number(int): "; 
cin >> lol 
cout << lol; 

如果鍵入5然後它會清點5.如果鍵入FD它COUTS一些數字。 如何指定值,如說我只想要一個int?

回答

7

如果您輸入fd它將輸出一些數字,因爲這些數字是lol恰好在它們分配給它們之前碰到的數字。 cin >> lol不會寫入lol,因爲它沒有可接受的輸入來放入它,所以它只是讓它保持獨立,其值就是通話之前的任何值。然後你輸出它(這是UB)。

如果你想確保用戶輸入的東西可以接受的,你可以包裝>>if

if (!(cin >> lol)) { 
    cout << "You entered some stupid input" << endl; 
} 

而且你可能想在閱讀,以便之前分配給lol,如果讀失敗,它還是有一定的允許值(而不是UB使用):

int lol = -1; // -1 for example 

如果,例如,要循環,直到用戶給你一些有效輸入,你可以做

int lol = 0; 

cout << "enter a number(int): "; 

while (!(cin >> lol)) { 
    cout << "You entered invalid input." << endl << "enter a number(int): "; 
    cin.clear(); 
    cin.ignore(numeric_limits<streamsize>::max(), '\n'); 
} 

// the above will loop until the user entered an integer 
// and when this point is reached, lol will be the input number 
+0

我不知道爲什麼,但它仍然cout隨機數當我輸入的東西不是一個數字,這是爲什麼? – 2012-02-04 17:03:52

+1

@BartekSowka因爲我說的。 'lol'有一些未初始化的值,如果用戶輸入的不是數字,它就不會被改變。 'if'會告訴你'lol'是否被改變。如果用戶輸入的不是數字,你必須_not輸出'lol'_。 – 2012-02-04 17:06:15

+0

@BartekSowka查看上面我的答案更新中的示例。 – 2012-02-04 17:07:45