当前位置:  开发笔记 > 编程语言 > 正文

如何使用正则表达式删除std :: wstring中特定短语的所有实例?

如何解决《如何使用正则表达式删除std::wstring中特定短语的所有实例?》经验,为你挑选了1个好方法。

我试图遵循这个答案:https://stackoverflow.com/a/32435076/5484426,但对于std :: wstring.到目前为止,我有这个:

std::wstring str = L"hello hi hello hi hello hi";
std::wregex remove = L"hi";

现在我想这样做:regex_replace(str,remove,""); 虽然看起来regex_replace不适用于wstring.如何删除此字符串的所有实例?



1> chris..:

std::regex_replace当然适用于std::wstring和所有其他专业std::basic_string.但是,替换格式字符串的字符类型必须与正则表达式和输入字符串的字符类型匹配.这意味着您需要一个宽替换格式字符串:

std::regex_replace(str, remove, L"");

除此之外,std::wregex获取a 的构造函数const wchar_t*是显式的,因此您的复制初始化将不起作用.此外,这个重载std::regex_replace返回一个新的字符串,替换完成而不是在适当的位置,这是值得注意的.

以下是考虑以下几点的示例:

std::wstring str = L"hello hi hello hi hello hi";
std::wregex remove{L"hi"};   

str = std::regex_replace(str, remove, L"");

推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有