我觉得这是一个相当基本的问题,但我已经在互联网上搜索了一个多小时,但我还没有找到答案。
我正在编写一个将输入作为字符串的文本界面。如果输入字符串是数字,我想将字符串转换为整数并将其推送到我创建的堆栈中。
文本界面代码如下:
#include <iostream>
#include "textInterface.h"
#include "Stack.h"
#include <string>
#include <regex>
using namespace std;
void Interface(){
Stack stack = Stack();
string input;
cout << "Please enter a number or operation";
cin >> input;
if (input == "."){
cout << stack.pop();
} //this pops the stack
if (input == "+"){
int a = stack.pop();
int b = stack.pop();
int c = a + b;
stack.push(c);
} //pops the first two things off the stack, adds them, and pushes the result
if (input == "-"){
int a = stack.pop();
int b = stack.pop();
int c = a - b;
stack.push(c);
} //pops the first two things off the stack, subtracts them, and pushes the result
if (input == "*"){
int a = stack.pop();
int b = stack.pop();
int c = a * b;
stack.push(c);
} //pops the first two things off the stack, multiplies them, and pushes the result
if (input == ".s"){
cout << stack.count();
} //returns the size of the stack
if (regex_match(input, "[0-9]")){
int num;
stringstream convert(input);
convert >> num;
stack.push(num);
} //This is the part with the error!!!
}
就像我说的,我想检查输入是否是数字,如果是,则将字符串转换为 int 并将其压入堆栈。我以前使用过正则表达式,但已经有一段时间了,而且是在 Python 中(我是 C++ 新手)。我知道我的 regex_match 公式不正确,有没有人有任何关于如何使其正确的建议,或者对资源阅读的建议?