在C++中,如果你想要在讀取輸入時跳過無效的內容,可以使用std::cin.ignore()
函數。這個函數可以忽略掉輸入流中直到指定字符為止的所有字符。
下面是一個簡單的例子,演示了如何使用std::cin.ignore()
來跳過無效內容:
#include <iostream>
#include <limits>
int main() {
int num;
std::string str;
while (true) {
std::cout << "請輸入一個整數(輸入q退出):";
if (std::cin >> num) {
// 處理有效的整數輸入
std::cout << "你輸入的整數是:" << num << std::endl;
break;
} else {
// 如果輸入不是整數,則忽略無效的內容
std::cin.clear(); // 清除錯誤標志
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // 忽略無效的內容
std::cout << "輸入無效,請重新輸入!" << std::endl;
}
}
while (true) {
std::cout << "請輸入一個字符串(輸入q退出):";
std::getline(std::cin, str);
if (str == "q") {
break;
}
// 處理有效的字符串輸入
std::cout << "你輸入的字符串是:" << str << std::endl;
}
return 0;
}
在這個例子中,如果用戶輸入了非整數的字符,程序會使用std::cin.ignore()
來忽略這些無效的內容,并提示用戶重新輸入。同樣地,如果用戶輸入了非字符串的內容(例如整數),程序也會使用std::cin.ignore()
來忽略這些無效的內容。