我试图遵循这个答案: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。如何删除此字符串的所有实例?
最佳答案
std::regex_replace
当然适用于 std::wstring
,以及 std::basic_string
的所有其他特化。但是,替换格式字符串的字符类型必须与正则表达式和输入字符串的字符类型相匹配。这意味着您需要一个广泛的替换格式字符串:
std::regex_replace(str, remove, L"");
除此之外,采用 const wchar_t*
的 std::wregex
的构造函数是显式的,因此您的复制初始化将不起作用。此外,std::regex_replace
的重载会返回一个完成替换的新字符串,而不是就地替换,这一点需要注意。
这是一个 example考虑到这些要点:
std::wstring str = L"hello hi hello hi hello hi";
std::wregex remove{L"hi"};
str = std::regex_replace(str, remove, L"");
关于c++ - 如何使用正则表达式删除 std::wstring 中特定短语的所有实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34080899/