如何将单个char转换为double

时间:2016-04-26 17:08:36

标签: c++

我尝试创建一个可以评估简单数学表达式的程序,例如" 4 + 4"。表达式由用户提供。

程序将其保存在char*中,然后搜索二进制操作(+, - ,*,:)并执行操作。

问题是,我无法弄清楚如何将单个 char转换为double值。

我知道有atof功能,但我想转换单char

有一种方法可以在不创建char*的情况下执行此操作吗?

2 个答案:

答案 0 :(得分:0)

char通常代表一个角色。但是,单个char只是一个整数,范围至少为[-127,+ 127](签名版本)或至少为[0,255](无符号版本)。

如果您获得的字符看起来像数字,则存储在其中的值是表示它的ASCII数字。数字从代码48开始(为零)并逐渐增加直到代码57(对于九)。因此,如果您取代码并减去48,则得到整数值。从那里,将其转换为双倍是一个铸造问题。

因此:

char digit = ...
double value = double(digit - 48);

甚至更好,为方便起见:

char digit = ...
double value = double(digit - '0'); //'0' has a built-in value 48

答案 1 :(得分:0)

  

有一种方法可以在不创建char * ???

的情况下完成此操作

不确定。您可以从单个char中提取数字编号,如下所示:

char c = '4';
double d = c - '0'; 
        // ^^^^^^^ this expression results in a numeric value that can be converted
        //         to double

这使用某些字符表(如ASCIIEBCDIC)对从'0'开始的连续值集中的数字进行编码的情况。