C++ 如何在C+;中检查输入是否为int+;?
如果输入是一个整数,我想将其设置为一个整数变量 如果输入是一个字符串,我希望将其设置为一个字符串变量,然后检查字符串是否为“quit” 我不知道怎么检查。我寻找了一个内置函数,但什么也没找到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\'
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;
}