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

时间:2014-05-27 13:24:25

标签: c++ char save int

您好我正在尝试保存未知数量的char和int输入,然后将它们填充到一个名为push的函数,但我意识到我正在使用的方法将更改int的输入。因此,我想问一下这是否还有其他方法?感谢和抱歉,因为我刚刚开始使用c ++而问到了noob qn。

    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);
        }
    }

3 个答案:

答案 0 :(得分:0)

我相信您可以利用isdigit中的<cctype>istream的{​​{1}}功能来完成您的解析技术。

putback

您还可以使用char c; int i; while(cin >> c) { if(isdigit(c)) { cin.putback(c); cin >> i; //read my integer } else { //handle operator } } 功能在阅读前查看下一个字符。如果它是一个数字,那么就像正常一样解析。使用此功能时,请手动忽略空格。

答案 1 :(得分:0)

如果不了解输入信息很难说,但如果你的输入只包含数字和操作(+, - ,*,/,=),那么你可以做的修改量最少类似的东西:

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

当您正在阅读这些字符时,只要您还没有阅读某项操作,您就会建立一个数字字符串,并且只有当您阅读了某个操作时你知道你有一个完整的号码吗?

答案 2 :(得分:0)

如果您阅读了一个数字,只需将其连接到前一个数字 - 如果之前有一个数字 - 另一个明智的存储它。这样,如果你有13+1,它会先找到1,然后是3,但前面找到的是一个数字,所以它变成13。然后你找到+,所以你将13存储在某处(在矢量中)。等