C++ 在C+中用另一个std::string替换给定std::string的实例+;

C++ 在C+中用另一个std::string替换给定std::string的实例+;,c++,string,std,C++,String,Std,我一直在网上寻找一些可以做以下事情的东西,但没有成功。我有一些难看的字符串作为Betfair SOAP响应的一部分返回,该响应使用许多不同的字符分隔符来标识信息的某些部分。令人尴尬的是,它们并不总是只有一个字符长度。具体地说,我需要在':'字符处拆分一个字符串,但必须先将“\\:”的所有实例替换为我的个人标志“-COLON-”(第一次拆分后必须再次替换) 基本上我需要像这样的字符串的所有部分 "6(2.5%,11\:08)~true~5.0~1162835723938~" 成为 "6(2.

我一直在网上寻找一些可以做以下事情的东西,但没有成功。我有一些难看的字符串作为Betfair SOAP响应的一部分返回,该响应使用许多不同的字符分隔符来标识信息的某些部分。令人尴尬的是,它们并不总是只有一个字符长度。具体地说,我需要在
':'
字符处拆分一个字符串,但必须先将
“\\:”
的所有实例替换为我的个人标志
“-COLON-”
(第一次拆分后必须再次替换)

基本上我需要像这样的字符串的所有部分

 "6(2.5%,11\:08)~true~5.0~1162835723938~"
成为

 "6(2.5%,11-COLON-08)~true~5.0~1162835723938~
在perl中是(从内存中)


我一直在寻找
std::string
的函数,特别是
std::find
std::replace
,我知道我可以用这些基本函数编写出我需要的代码,但我想知道标准库(或其他地方)中是否有函数这已经做到了???

如果你有C++11,像这样的东西应该可以做到:

#include <string>
#include <regex>

int main()
{
std::string str("6(2.5%,11\\:08)~true~5.0~1162835723938~");
std::regex rx("\\:"); 
std::string fmt("-COLON-");
std::regex_replace(str, rx, fmt);

return 0;
}
#包括
#包括
int main()
{
标准:字符串str(“6(2.5%,11\\\:08)~true~5.0~116285723938~”;
std::regex rx(“\\:”);
std::字符串fmt(“-冒号-”);
标准:正则表达式替换(str、rx、fmt);
返回0;
}

Edit:匹配类型还有一个可选的第四个参数,可以在
std::regex_constants
名称空间中找到。例如,仅用提供的格式替换正则表达式匹配的第一个匹配项。

您看过C++11正则表达式工具吗?它包括匹配替换操作,我对C++11不太熟悉,因为我目前正在编写的编译器不支持C++11。不管怎样,谢谢你的建议。有时我希望标准中有这样的东西。
#include <string>
#include <regex>

int main()
{
std::string str("6(2.5%,11\\:08)~true~5.0~1162835723938~");
std::regex rx("\\:"); 
std::string fmt("-COLON-");
std::regex_replace(str, rx, fmt);

return 0;
}