[英]How to skip 'enter' in cin.ignore()
我寫了一個代碼來檢查 int cin 中的 char 'exit'。 但是我發現我需要在cin.ignore
設置分隔符,例如'\\n'
並在運行命令時輸入它,我認為這不友好。
如何更改代碼以跳過提取步驟,也許使用其他代碼而不是cin.ignore
?
對不起,所有試圖閱讀我的英語並回答的人,因為我不是英語母語用戶。 我的意思是cin.ignore
是提取和丟棄字符,直到找到給定的字符,是否有辦法清除 C++ 中的 cin 緩沖區並丟棄字符而不提取?
void checkcin(int &y)
{
string input = "", ans;
cin.clear();
cin.ignore(INT_MAX, '\n');
getline(cin, input);
while (input == "exit")
{
cout << "Are you sure to exit: ";
cin >> ans;
if (ans == "yes")
{
cout << "Bye." << endl;
exit(0);
}
else if (ans == "no")
{
cout << "Then welcome back!";
cout << "Input again: ";
cin >> input;
}
}
y = std::stoi(input);
}
您正在使用的“std::cin.ignore()”中的第一個參數歸結為一個非常大的數字。 這應該是輸入緩沖區可以容納的最大字符數。 這個數字在不同的系統上可能不同,甚至在不同編譯器的頭文件上也可能不同。
您需要按 Enter 兩次,因為緩沖區中沒有可忽略的內容。 它正在等待輸入的東西忽略。 有些人會在“return 0;”之前使用它來暫停程序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.