为什么Visual Studio正在清除我的一串反斜杠

why is Visual Studio is ridding my string of back-slashes

本文关键字:一串 Studio Visual 我的 清除 为什么      更新时间:2023-10-16

我将以下字符串传递给一个函数,因此

void func(string expr)
{ 
regex pattern(expr);
}
func( "(d{1,2}.+d{2})" )

然而,通过visualstudio调试器,我发现存储的regex模式实际上是(d{1,2}.+d{2}),这导致我的regex完全故障。为什么会发生这种情况,我该如何解决。

这些是反斜杠,默认情况下是转义字符。将它们视为文字。。。

试试这个(在C++11中(。R表示原始字符串,其形式为R "delimiter( raw_characters )delimiter",其中分隔符可以是您喜欢的任何字符序列。在这种情况下,我只使用了括号。

func( R"((d{1,2}.+d{2}))" )

或者在任何版本中都是这样:

func( "(\d{1,2}\.+\d{2})" )