0
說我有:指定CIN值(C++)
int lol;
cout << "enter a number(int): ";
cin >> lol
cout << lol;
如果鍵入5然後它會清點5.如果鍵入FD它COUTS一些數字。 如何指定值,如說我只想要一個int?
說我有:指定CIN值(C++)
int lol;
cout << "enter a number(int): ";
cin >> lol
cout << lol;
如果鍵入5然後它會清點5.如果鍵入FD它COUTS一些數字。 如何指定值,如說我只想要一個int?
如果您輸入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
我不知道爲什麼,但它仍然cout隨機數當我輸入的東西不是一個數字,這是爲什麼? – 2012-02-04 17:03:52
@BartekSowka因爲我說的。 'lol'有一些未初始化的值,如果用戶輸入的不是數字,它就不會被改變。 'if'會告訴你'lol'是否被改變。如果用戶輸入的不是數字,你必須_not輸出'lol'_。 – 2012-02-04 17:06:15
@BartekSowka查看上面我的答案更新中的示例。 – 2012-02-04 17:07:45