これはかなり基本的な質問だと思いますが、インターネットを 1 時間以上検索しましたが、答えが見つかりませんでした。
入力を文字列として受け取るテキスト インターフェイスを作成しています。入力文字列が数値の場合、文字列を整数に変換し、作成したスタックにプッシュします。
テキスト インターフェイスのコードは次のとおりです。
#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 が正しく定式化されていないことは知っていますが、それを正しくする方法について誰かアドバイスや、読むべきリソースの提案はありますか?