你好,我想檢查我的程序,如果用戶,而不是鍵入一個數字,如果他鍵入的東西,不是一個數字。isdigit()總是通過檢查
,所以我做了這個功能
void ValidationController::cinError(int *variable){
if(!isdigit(*variable)){
cin.clear();
cin.ignore(256, '\n');
cout <<*variable<<endl;
*variable=0;
cout <<*variable<<endl;
}
}
我調用該函數是這樣的:
int more;
cin >>more;
cinError(&more);
所以我的問題是,每次我給一個數字,它就像我didn't.It去在裏面如果使變量等於零。我在這裏失蹤了什麼?
[isdigit](http://linux.die.net/man/3/isdigit)對來自char *'數組的字符代碼進行操作。如果你已經有一個'int'變量,它會自動成爲一個數字,但它的值可能不會是單個數字的字符代碼。你期望'cinError'做什麼?沒有可能的輸入到一個不是數字的'int'的函數。 – simonc
我期望測試用戶的輸入是否是一個數字,如果這不是真正的設置從cin設置的變量等於0否則保留該變量,因爲它是 – kyrpav
然後,您不能讀取一個整數。一個字符串將是一個更好的選擇。 – drescherjm