1

我正在尝试将表达式“5 + b * 18”转换为“5+16.89*18”。我的问题在while循环内。我设法删除了空格。

我的代码:

double number = 16.89;
size_t found;
ostringstream converted;
string str ("5 + b * 18");

str.erase(remove(str.begin(),str.end(),' '),str.end());

found = str.find_first_of (VALID_CHARS);

while (found != string::npos)
 {        
  converted << fixed << setprecision (8) << number;        
  str.insert(found, converted.str());                                               
  found = str.find_first_of (VALID_CHARS,found + 1);
 }

谁能帮我?

4

3 回答 3

1

这是作业吗?如果没有,我真的建议不要自己进行这种解析。有专门的库用于这种已经过广泛测试的东西,例如muParser

于 2012-05-23T17:04:56.117 回答
1

insert()将在插入文本之后将字符串的内容向右移动,但不会删除给定位置的字符。您应该使用replace(),指定 ` 的大小(仅替换单个字符)

于 2012-05-23T17:04:57.820 回答
0

使用sprintf。它非常适合将大多数原始类型转换为字符串。

int main()
{
  double number = 16.89;
  char buffer [50];
  sprintf(buffer, "5 + %f * 18",number);
}
于 2012-05-23T17:03:12.670 回答