c++ - 检查返回值是整数还是字符

标签 c++

我有一个用 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/

相关文章:

c++ - 计算表达式直到一个返回真

c++ - 尝试在 DLL 中使用静态库的 Visual Studio 链接器错误(LNK2038、LNK2005)

c++ - GSL:求解具有随时间变化的系数的 ODE

c++ - 我可以使用先前设置的变量来创建下一个类成员吗?

c++ - 在 VC++ MFC 中创建另一个鼠标光标

c++ - 构建 Z3 不稳定分支时出错

c++ - 违反严格别名,即使没有任何转换?

c++ - 使用std::forward_list的队列实现返回错误

c++ - pthread_join() 在 iOS 上失败

c++ - 控制台输出中的意外字符