我实际上正在做一个家庭作业问题而且我已经完成了这个程序。我唯一的问题是当我输入一个字符或数字时,它无法拒绝它。这是问题所在:
编写程序以检查以下语言中的平衡符号:C ++(/ * * /,(),[],{})。
我已经设置了一个if语句列表,以确保是否存在不均匀的符号数量(/ * * /,(),[],{})它将检测到它。我唯一的问题是,当我输入一个数字时,它不会被我的任何if语句(自然地)过滤掉,并且它作为一个平衡的传递来传递。条目。
回到我最初的问题,有没有办法可以让任何' int'检测到并被拒绝?这是我试图了解我想要做的事情之一:
if (top == int)
{
cout << "Invalid Entry"; \\an integer is detected
main (); \\due to an int input it would rout back through to start
}
我是一个总菜鸟,所以任何帮助或指向正确的方向都会很棒
答案 0 :(得分:3)
您可以检查有效的整数输入,只需拒绝这些:
std::string input;
while(std::cin >> input) {
int dummy;
std::istringstream iss(input);
if(cin >> dummy) {
cout << "Invalid Entry" << endl; //an integer is detected
continue; // Read again
}
// ... process input
}
答案 1 :(得分:0)
有许多可能的解决方案,但我最喜欢的一个是调用一个能为我处理它的功能。
bool IsInteger(string line) {
for (int i=0; i<line.size(); ++i) {
if (!isdigit(line[i])) {
return false;
}
}
return true;
}
int main() {
string input;
while (cin >> input) {
if (IsInteger(input)) {
cout << "Integer detected!" << endl;
} else {
// Do stuff
}
}
}