c ++ regex:MS VS 2013输出与在线“c ++ 2014 live code”输出不同

时间:2015-05-01 18:16:53

标签: c++ regex

编辑:没关系。它现在有效。谁知道。我正撞在墙上。

在MS Visual Studio Express 2013中运行以下代码时,它不起作用,原始字符串将不加修改地打印。 当代码在线运行时,使用“C ++ 2014”,它是正确的,并且在')'和'9'之间添加'*'。发生了什么事?

现场代码可在ideone.com/2mq4u3处找到。

std::string ss ("1 + (3+2)9 - 2 ");
std::regex ee ("(\\)\\d)([^ ])");

std::string result;
std::regex_replace (std::back_inserter(result), ss.begin(), ss.end(), ee, ")*$1");
std::cout << result;

实时代码输出:1 + (3+2)*9 - 2

MS VC 2013输出:1 + (3+2)9 - 2

1 个答案:

答案 0 :(得分:2)

此代码在Visual Studio中运行:

/* CHARSET
-------------------------------------------------- */
@charset "utf-8";


/* IMPORTS - LIBRARIES - BOOTSTRAP
-------------------------------------------------- */
@import "bootstrap-sprockets";
@import "bootstrap";


/* IMPORTS - LIBRARIES - JQUERY UI
-------------------------------------------------- */
@import "jquery.ui.core";
@import "jquery.ui.theme";
@import "jquery.ui.datepicker";


/* IMPORTS - SCSS MIXINS
-------------------------------------------------- */
@import "mixins/*";


/* IMPORTS - LAYOUT CSS
-------------------------------------------------- */
@import "layout";


/* IMPORTS - CONTROLLERS' CSS
-------------------------------------------------- */
@import "controllers/*";

控制台窗口:

enter image description here

实际上,您可以使用:

std::string ss ("1 + (3+2)9 - 2 ");
std::regex ee ("\\)(\\d)");

std::string result;
std::regex_replace (std::back_inserter(result), ss.begin(), ss.end(), ee, ")*$1");
std::cout << result;

您将获得相同的输出。

以下是我所拥有的包含列表:

std::regex ee("\\)(\\d)");
std::string result = std::regex_replace (ss, ee, ")*$1");