我需要限制用户在输入char时输入整数和字符串。我有一个整数的方法我只需要调整它的char。任何人都可以帮助我。
char getChar()
{
char myChar;
std::cout << "Enter a single char: ";
while (!(std::cin >> myChar))
{
// reset the status of the stream
std::cin.clear();
// ignore remaining characters in the stream
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
// ^^^ This line needs to be changed.
std::cout <<
"Enter an *CHAR*: ";
}
std::cout << "You entered: " << myChar << std::endl;
return myChar;
}
char getChar()
{
char myChar;
std::cout << "Enter an Char: ";
while (!(cin >> myChar))
{
// reset the status of the stream
cin.clear();
// ignore remaining characters in the stream
cin.ignore(std::numeric_limits<char>::max() << '\n');
cout << "Enter an *CHAR*: ";
}
std::cout << "You entered: " << myChar << std::endl;
return myChar;
}
我试过这个并且没有错误。但它并不神奇。
答案 0 :(得分:3)
我猜测“不起作用”你的意思是即使你输入一个更长的字符串或数字,它仍然被接受。这是因为通过<<
运算符输入的所有字母和数字仍然是单个字符。
如果您不想要非字母字符,则必须添加另一项检查:
while (!(std::cin >> myChar) || !std::isalpha(mychar))
有关std::isalpha
的解释,请参阅this reference。
答案 1 :(得分:0)
我将methid更改为:
char getChar(string q)
{
char input;
do
{
cout << q.c_str() << endl;
cin >> input;
}
while(!isalpha(input));
return input;
}
我的主要是:
字符串输入=&#34;你的性别M / F是什么?&#34 ;; char sex = getChar(输入); cout&lt;&lt;性别&lt;&#;&#34; \ n&#34;;
在这个问题上,我不允许输入一个数字,询问性别是什么。