所以我对C ++还是很陌生,我正在为我的课做作业。尝试检查输入是字符串还是double / int时遇到问题。所以我做了一个基本程序来测试它
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char *argv[])
{
string hi;
double hello;
cin >> hello;
if (!cin)
{
//Strings go here
cin.clear();
cin >> hi;
cout << hi << endl;
}
else
{
cout << hello << endl;
}
cout << "Done!" << endl;
}
因此,它基本上可以在输入字母(例如“ j”或“ a”)或数字时使用,但是在输入“ +”或“-”时,它将等待下一个输入,然后将其强制通过字符串块,甚至如果是数字。但是,“ *”或“ /”被读取为字符串,不会引起该问题(我假设是因为它们不是显式运算符)我认为我可能会丢失一些东西。谢谢
编辑:我一次测试单个类型(例如123、1,d,+),而没有混合类型,因此不会有任何包含双精度和字符串的输入
根据用户4581301的建议,我将在一些示例中输入和输出
输入:输出
“” Hello“:” Hello“
123:123
“ /”:“ /”
“ +”(以下输入:2):“ 2”
您的程序不能完全按预期运行,因为它没有考虑可能消耗但丢失的字符。