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

时间:2012-07-10 19:29:36

标签: c++ string std

我一直在网上寻找没有成功的东西,但是做了以下事情。我有一些丑陋的字符串作为Betfair SOAP响应的一部分返回,它使用许多不同的字符分隔符来识别信息的某些部分。让它变得尴尬的是它们并不总是只有一个字符长度。具体来说,我需要在':'个字符处拆分字符串,但只有在我第一次用我的个人标记"\\:"替换"-COLON-"所有实例之后然后在第一次拆分后再次更换)。

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

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

成为

 "6(2.5%,11-COLON-08)~true~5.0~1162835723938~

在perl中它是(来自记忆)

 $mystring =~ s/\\:/-COLON-/g; 

我一直在寻找std::string的功能,特别是std::findstd::replace,我知道我可以使用这些基本功能编写如何做我需要的功能,但我想知道标准库(或其他地方)中是否有一个功能已经完成了这个?

2 个答案:

答案 0 :(得分:5)

答案 1 :(得分:1)

如果你有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;
}

编辑:匹配类型还有一个可选的第四个参数,可以是我认为的std::regex_constants命名空间中的任何内容。例如,仅使用提供的格式替换第一次出现的正则表达式匹配。