我尝试创建一个可以评估简单数学表达式的程序,例如" 4 + 4"。表达式由用户提供。
程序将其保存在char*
中,然后搜索二进制操作(+, - ,*,:)并执行操作。
问题是,我无法弄清楚如何将单个 char
转换为double
值。
我知道有atof
功能,但我想转换单char
。
有一种方法可以在不创建char*
的情况下执行此操作吗?
答案 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)