我正在尝试制作一个更高级的计算器,您可以在其中输入一段代数。 我有这个问题,包含你输入内容的字符串即使在'+'时也没有测试为正。
这是测试字符串
的代码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
答案 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;
}
}
}