C++ 保存未知数量的int和char输入

C++ 保存未知数量的int和char输入,c++,char,save,int,C++,Char,Save,Int,嗨,我正在尝试保存未知数量的char和int输入,然后将它们填充到一个名为push的函数中,但我意识到我使用的方法将int save的输入从例如13更改为1和3。因此,我想问,是否还有其他方法可以做到这一点?感谢和抱歉的NOOB QN问我刚开始在C++。 char input; int inNum; Stack st; cout << "Enter an expression: " << endl; while(cin >

嗨,我正在尝试保存未知数量的char和int输入,然后将它们填充到一个名为push的函数中,但我意识到我使用的方法将int save的输入从例如13更改为1和3。因此,我想问,是否还有其他方法可以做到这一点?感谢和抱歉的NOOB QN问我刚开始在C++。
    char input;
    int inNum;
    Stack st;

    cout << "Enter an expression: " << endl; 

    while(cin >> input)
    {
        if (input != '+' && input != '-' 
            && input != '/' && input != '*' 
            && input != '=')
        {
            inNum = input - '0';
            cout << inNum << endl;
            st.push(inNum);
        }
    }
char输入;
内因努姆;
斯塔克街;
cout(输入)
{
如果(输入!='+'&&input!='-'
&&输入!='/'&输入!='*'
&&输入!='='))
{
inNum=输入-'0';

cout我相信您可以利用
中的
isdigit
putback
istream
功能来完成解析技术

char c;
int i;

while(cin >> c) {
  if(isdigit(c)) {
    cin.putback(c);
    cin >> i; //read my integer
  }
  else {
    //handle operator
  }
}

在阅读之前,您还可以使用
peek
函数查看下一个字符。如果它是数字,则像正常情况一样进行解析。使用此函数时手动忽略空白。

如果不了解更多输入信息,则很难说,但如果您的输入仅包含数字和运算(+、-、*、/、=),则只需最少的修改,即可执行以下操作:

string numBuffer;
while(cin >> input)
{
    if (input != '+' && input != '-' 
        && input != '/' && input != '*' 
        && input != '=')
    {
        temp += input;
    } else {
        st.push(atoi(numBuffer.c_str()));
        numBuffer = "";
    }
}

当你读入字符时,只要你还没有读入一个操作,你就在建立一个数字字符串,只有当你读入一个操作时,你才知道你有一个完整的数字。

如果你读入了一个数字,只需将它连接到前一个数字上——如果之前有一个,那么就可以存储它。这样,如果你有
13+1
,它会先找到
1
,然后找到
3
,但之前找到的是一个数字,所以它变成了
13
。然后你找到
+
,所以你把
13
存储在某个地方(向量或其他形式).Etc

对于初学者,如果输入应该读取字符,那么它应该是一个
char
对不起,我犯了一个打字错误。表达式有特定的形式吗?还是应该是一个通用表达式解析器?表达式类似于1+2+3/4+5*6之类的