我想要获取用户的输入(数学表达式)并将其推入堆栈。然后我想通过一些规则运行它,询问它是'(',数字,还是操作符'+'。我的问题是到目前为止我不知道如何判断,特别是在while循环中首先说明如果声明,如果一个字母“实际上”是一个数字。有任何建议吗?
#include <stack>
int main()
{
std::stack<char> myStack; // initializing the stack
char line[40];
cin.getline(line, 40); // this and the proceeding line get the input
for (int i = 0; i < 40; i++)
myStack.push(line[i]); //pushing all of the char onto the stack.
while (!myStack.empty()) {
if (myStack item = a number) {
// ^ this is where it doesn't compile.
// I need to figure out how to find out if a char is a number
cout << item << endl;
}
else if (myStack.empty()) {
myStack.push(item);
}
}
}
答案 0 :(得分:2)
有一个函数是C ++,称为isdigit,它检查一个字符是否为十进制数字。
if(isdigit(your_char)) //Then it's a number
答案 1 :(得分:1)
stdlib中有一个名为isdigit()
的函数可以为您回答这个问题。
chars
48-57
,48
为'0'
,57
为'9'
。
char isdigit(char d) {
return (d >= 48) && (d <= 57);
}
答案 2 :(得分:1)
使用 isdigit 功能:
isdigit(x)
答案 3 :(得分:0)
根据您的问题,如果你想要的只是查找char是否为数字。请将它转换为int并检查它是否在ascii值48和57之间,两者都包括在内。
bool CheckIfNum(char chartToCheck)
{
int aciiOfChar = (int) charToCheck;
if (asciiOfChar >= 48 && asciiOfChar <= 57)
return true;
return false;
}
你也可以使用std :: isdigit函数