我有一个用 C++ 编写的小“二十一点”程序。问题是该程序会询问诸如“你愿意......(y/n)吗?”之类的问题。用户需要输入 y/n。我想检查返回的值是否确实是我想要的类型。因此,应该返回 int 的函数返回 int,而应该返回 char 的函数返回 char,然后才实际返回某些内容。
我需要一些建议。我认为这并不困难,我只是找不到任何解决方案。谢谢。
代码:
char pickCard(){
char aCard;
std::cout << "Would you like another card?";
std::cin >> aCard;
if (aCard is a char){
return aChar;
} else {
std::cout << "Not a char!";
}
}
最佳答案
我认为您对 std::istream 的格式化输入的工作原理存在误解。在您的示例中,aCard
必须是char
,因为您已将其声明为此类。如果用户输入多个字符,aCard
会放入一个字符,std::cin
会保留其他字符,下次再给您您调用 operator>>
(或任何其他输入函数);如果用户输入一个数字,aCard
将是该数字的第一个数字的字符表示形式。
请记住,operator>>
知道您赋予它的变量类型,并且它将确保用户的输入对该类型有效。如果您给它一个 int
,它将确保用户输入可以转换为 int
,如果不是,则给您 0
。变量只能是您声明它的类型。
如果您对 char
特别感兴趣,这里有一大堆 character classification functions您可以用来判断您正在使用哪种字符(字母、数字、空格等),但请记住 char foo('4')
与 完全不同>int foo(4)
.
关于c++ - 检查返回值是整数还是字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34275845/