2012-12-31 71 views
0

我正在製作一個程序,用戶必須通過輸入1,2或3來選擇一個選項。我能夠檢測到他們輸入的數字並讓程序重複如果他們使用switch語句輸入除這些以外的其他號碼。每次我輸入一封信時,程序都會每秒重複提示數百次。如何在繼續之前檢查變量以確保其中包含int。我有一種感覺,它會涉及到使用一個字符串,然後檢查它,以確保它包含一個int然後轉換它,如果我能有一個這樣的代碼的例子,它會很好。謝謝C++檢測用戶是否輸入字符串而不是輸入

+0

檢查輸入操作的結果。 – chris

+2

和代碼?.. – 0x499602D2

+0

你只能存儲第一個字符,並檢查ascii值是否是一個數字,如果你只是做1-3有效輸入 – Ken

回答

8

您應該總是驗證您已成功讀取所需的輸入。如果輸入失敗了,你可能想擺脫違規字符,然後重試:

int value(0); 
while (!(std::cin >> value)) { 
    std::cout << "you entered a non-digit character\n"; 
    std::cin.clear(); // make sure that std::cin is happy to do something 
    std::cin.ignore(); // ignore the offending character 
} 

當輸入失敗,則std::ios_base::failbit被設置在流和數據流不會轉換爲true(或者不操作應用於流的!返回true)。一旦設置了std::ios_base::failbit,流將拒絕任何進展,直到該位再次被清除。使用clear()您可以重置錯誤位。然而,一旦位被重置,違規字符仍然在輸入中。要擺脫下一個字符,您可以使用ignore()。如果你覺得你想忽略整行輸入,你會使用類似於

std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); 
相關問題