在C ++中将包含二进制操作的字符串转换为double

时间:2014-06-03 14:50:43

标签: c++ string double stringio

我有以下意图:

取一个字符串,如:

 string test = "2.0+2.5";

并将其转换为双4.5。这可能吗?我也想将它扩展到复杂类型。我有更多Java经验,但我正在尝试使用C ++。我试图使用stringstream,但是我最终得到的两倍只是2.所以我想它停在“+”。感谢您的帮助或指示。

1 个答案:

答案 0 :(得分:2)

在C ++中你不能像Python 这样的scipted语言中使用eval字符串。所以你必须编写代码来解析语句,如:

double v1 = lexical_cast<double>( /* extract "2.0" from test */);
double v2 = lexical_cast<double>( /* extract "2.5" from test */);
double result = 0.0;
char op = // extract '+' from test
switch(op) {
case '+':
    result = v1 + v2;
    break;
// etc

或者,您可以使用脚本语言(如 C ++代码)到eval语句作为字符串。