C ++字符串,该字符串不能包含加号

时间:2013-02-13 03:25:43

标签: c++ string

我正在尝试制作一个更高级的计算器,您可以在其中输入一段代数。 我有这个问题,包含你输入内容的字符串即使在'+'时也没有测试为正。

这是测试字符串

的代码
for(int i = 0; i < line.length(); i++)
{
    if(pos == 0 && line[i] >= '0' && line[i] <= '9' || line[i] == '.')
    {           
        p1[p1p] = line[i]; // setting the number to the current character
        p1p++; // position of the first number  
    }
    if(line[i] == '+')
    {
    pos++; 
    operation = 1;
    cout << "add" << endl;
    }
}

除非数字的最后一个字符与+符号

之间没有空格,否则永远不会输出+

e.g。 '100 + 10'将测试'+'为正 但'100 + 10'不会。

谢谢-Hugh

2 个答案:

答案 0 :(得分:1)

如果我的猜测正确,您可以使用std::cin输入数据。这就是为什么它不会在第一个空格后读取字符。

改为使用getline()函数。

答案 1 :(得分:0)

您可以使用自然读取(可选)空格分隔值的operator>>

int val;
while(std::cin >> val)
{
    // We have a value (an integer)

    char c;
    if (std::cin >> c)
    {
        // we have read the next non space character
        switch(c)
        {
            case '+': std::cout << "Adding: " << val << "\n";break;
        }
    }
}