Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么VisualStudio正在消除我的一系列反斜杠_C++_Regex_Visual Studio - Fatal编程技术网

C++ 为什么VisualStudio正在消除我的一系列反斜杠

C++ 为什么VisualStudio正在消除我的一系列反斜杠,c++,regex,visual-studio,C++,Regex,Visual Studio,我将如下字符串传递给一个函数 void func(string expr) { regex pattern(expr); } func( "(\d{1,2}\.+\d{2})" ) 然而,通过VisualStudio调试器,我发现存储的正则表达式模式实际上是(d{1,2}.+d{2}),这导致我的正则表达式完全失灵。发生这种情况的原因以及我如何修复它。这些是反斜杠,默认情况下是转义字符。要将它们视为文字字符 试试这个(在C++11中)。R表示一个原始字符串,其形式为R“delimi

我将如下字符串传递给一个函数

void func(string expr)
{ 
    regex pattern(expr);
}

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

然而,通过VisualStudio调试器,我发现存储的正则表达式模式实际上是
(d{1,2}.+d{2})
,这导致我的正则表达式完全失灵。发生这种情况的原因以及我如何修复它。

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

试试这个(在C++11中)。R表示一个原始字符串,其形式为
R“delimiter(原始字符)delimiter”
,其中delimiter可以是您喜欢的任何字符序列。在本例中,我只使用了括号

func( R"((\d{1,2}\.+\d{2}))" )
或在任何版本中:

func( "(\\d{1,2}\\.+\\d{2})" )
方便阅读:C/C++将反斜杠(\)视为。解决方案:
func(“(\\d{1,2}\\.+\\d{2})”)
。这将“转义”“转义元字符”。或者,在C++中,你可以使用这个链接是C语言,而不是C++。皮特·贝克尔关于
R“[(\d{1,2}.+\d{2})]”
有什么看法?这可以用C语言完成吗?不,那个链接是不可发现的,因为它没有C++标签。不要叫别人的名字。@ScottHutchinson——说得好。重新开放。显然,我不能投票再次关闭它,所以其他人将不得不用一个更合适的链接。