C++ 如何在C+;中检查输入是否为int+;?

C++ 如何在C+;中检查输入是否为int+;?,c++,C++,如果输入是一个整数,我想将其设置为一个整数变量 如果输入是一个字符串,我希望将其设置为一个字符串变量,然后检查字符串是否为“quit” 我不知道怎么检查。我寻找了一个内置函数,但什么也没找到 while (true) { int numberEntered; string stringEntered; cout << "enter a number to see if it is greater than 5: \n or enter \'quit\'

如果输入是一个整数,我想将其设置为一个整数变量

如果输入是一个字符串,我希望将其设置为一个字符串变量,然后检查字符串是否为“quit”

我不知道怎么检查。我寻找了一个内置函数,但什么也没找到

while (true) {

    int numberEntered;
    string stringEntered; 

    cout << "enter a number to see if it is greater than 5: \n or enter \'quit\' to exit the program";

    //I don't know what to do below here
    cin >> ;

    if (stringEntered == "quit") {
        break;
    }

    if (numberEntered > 5) {
        cout << "that number is greater than 5" << endl;
    }
    else {
        cout << "not greater than 5" << endl;
    }
}
while(true){
整数编码;
输入字符串字符串;
库特
它可能更习惯于使用:

if (cin >> numberEntered)

David S.的答案很好。如果您想整齐地处理在行后输入的垃圾,这里有另一个选项(这对于您的情况来说更复杂,但是如果您以后想扩展程序来处理大量不同的输入,那么这种方法可能会更简单)

while(true)
{
输入字符串字符串;
cout numberented)| |(iss>>ch)
{

不能在此基础上扩展;如果结果是
cin>>numberEntered
失败,那么您可以转到
cin.clear();cin>>stringEntered;
获取下一个单词,或者
cin.clear();getline(cin,stringEntered)
获取行的剩余部分。如果此人键入“52hello”或“5 quit”或“很长的一句话"?@Matt McNabb我打算稍后再告诉dela。我想显示一条消息,上面写着“再试一次”。太好了。谢谢。这些评论帮助我理解。flush重要吗?没有它程序运行正常。这取决于你的编译器是否在没有
flush
的情况下运行。@Mattmcnab:不,不。这取决于你是否
std::cin
std::cout
。启动时,它们被绑定,然后自动刷新。
if (cin >> numberEntered)
while( true )
{
    string stringEntered;
    cout << "enter a number to see if it is greater than 5: \n or enter \'quit\' to exit the program: " << flush;

// read the whole line, this ensures no garbage remains in the input stream
    getline(cin, stringEntered);

    if ( stringEntered == "quit" )
        break;

// this checks that a number was entered and nothing else
    istringstream iss(stringEntered);
    int numberEntered;
    char ch;
    if ( !(iss >> numberEntered) || (iss >> ch) )
    {
        cout << "please try again. ";
        continue;
    }

// process the number
    cout << "that number is " << (numberEntered > 5 ? "" : "not ")
            << "greater than 5." << endl;
}