如何将char数组转换为整数或双精度数?

时间:2012-03-26 05:10:18

标签: c++ visual-c++ stack

此代码是堆栈的链接列表实现,解决了postfix.txt中的后缀问题。

我盯着我想要转换的界限。 我只是想把它放在我的堆栈之前使它成为一个双倍,所以我不能在以后做加法,减法,乘法和除法。我得到的错误是“预期表达”。 谢谢!

       void main()
        {
        ifstream postin("postfix.txt");
            char oper;
            char a[100];  
            int i=0;
            while(oper != '$')
            {
                stack operands;
                while(oper != '/n'&& oper != '$')
                {
                    while(oper != ' '&&oper != '/n'&& oper != '$')
                    {
                        oper = postin.get();
                        if(oper != '+' || oper != '*' || oper != '-' || oper != '/')
                        {
                            do
                            {
                            a[i]= oper;
                            i++;
                            }while(oper != ' ');
************************************************double number = atoi(a[]);
                            operands.Push(number)
                        }
                        else
                        {
                            double b = operands.Pop();
                            double a = operands.Pop();
                            if(oper == '+')
                            {
                                operands.Push(a+b);
                            }
                            else if(oper == '-')
                            {
                                operands.Push(a-b);
                            }
                            else if(oper == '/')
                            {
                                operands.Push(a/b);
                            }
                            else 
                            {
                                operands.Push(a*b);
                            }
                        }
                    }

                }

            }



        postin.close();
        }

4 个答案:

答案 0 :(得分:0)

您不希望“转换”字节数组,您希望将数字的字符串表示形式解析为正确的数据类型。

首先,您需要知道是否要处理整数或浮点值。然后你将要使用scanf()或atoi()/ atof()将值读入int或double。这些函数都采用char *参数,因此您只需传递a,而不是a[]

答案 1 :(得分:0)

如果您想要从某个偏移量开始,它只是atoi(a),或者可能是atoi(a + n)。虽然strtol() / strtod()可能是更有用的函数,但它们也会告诉您成功解析了多少个字符。并确保数组内某处有一个空终止符。

答案 2 :(得分:0)

使用atof()而不是atoi(),它会将字符串转换为double

答案 3 :(得分:0)

杰克,你忘记了一个索引表达式:

double number = atoi(a[i]);