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);
 }

誰か助けてもらえますか?

Ty

4

3 に答える 3

1

これは宿題ですか?そうでない場合は、この種の構文解析を自分で行うことはお勧めしません。muParserなど、広範囲にわたってテストされているこの種のもの専用のライブラリがあります。

于 2012-05-23T17:04:56.117 に答える
1

insert()挿入されたテキストの直後に文字列の内容をシフトしますが、指定された位置の文字は削除しません。`のサイズを指定して、を使用する必要がありますreplace()(1文字だけを置き換えるため)

于 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 に答える