3

我一直在网上寻找执行以下操作的东西,但没有成功。我有一些丑陋的字符串作为必发 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::find函数std::replace已经这样做了?

4

2 回答 2

5

boost::replace_all(input_string, "\\:", "-COLON-");

于 2012-07-10T19:33:06.287 回答
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我相信它可以是在命名空间中找到的任何东西。例如,仅将第一次出现的正则表达式匹配替换为提供的格式。

于 2012-07-10T19:39:37.717 回答