在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
答案 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/*";
控制台窗口:
实际上,您可以使用:
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");