我如何从 C++ 中的字符串中搜索和修改被特定模式包围的数字?

How could I search and modify numbers surrounded by certain patterns from a string in C++?

我正在尝试处理一个随机大小的字符串,并修改所有被特定模式包围的数字。例如,

字符串旧字符串="res 0.25 cap 0.12 tra 1 res 0.3 cap"; 字符串 newstring = "res 0.50 cap 0.12 tra 1 res 0.6 cap";

因此 "res" 和 "cap" 之间的所有数字都乘以 2。 我只知道如何搜索特定的子字符串(使用 stringstream、token、while 循环和 getline),但我不确定如何搜索像 "res ... cap" 这样的模式并修改它们之间的数字。

谁能给我一些指导?

你可以试试这个:

int main()
{

  string s = "res 0.25 cap 0.12 tra 1 res 0.3 cap";
  vector<string>split_string;
  string current;
  for (int i = 0; i < s.length(); i++)
  {
     if (s[i] != ' ')
     {
        current += s[i];
     }
     else
     {
        split_string.push_back(current);
        current = "";
     }
  }

  vector<string>final_data;
  for (string i:split_string)
  {
     if (i.find('.') != string::npos)
     {
       double new_val = stod(i);
       double new_val1 = new_val*2;
       string final_val = to_string(new_val1);
       final_data.push_back(final_val);

     }
     else
     {
       final_data.push_back(i);
     }
   }

   string final_string;
   for (string i: final_data)
   {
      final_string += i;
      final_string += " ";
   }
  cout << final_string << endl;

  }

}

最终输出:

res 0.500000 cap 0.240000 tra 1 res 0.600000