php - 为什么必须在 C++ 中转义字符串文字中的反斜杠?

标签 php c++ escaping tcl

我想为两种语言声明相同的正则表达式模式。对于 TCL 我这样做

set pattern "\d\s\S" 

但对于 C++,我必须对相同的模式执行此操作

boost::regex pattern("\\d\\s\\S");

否则 C++ 编译器会告诉我们以下内容:

warning C4129: 'd' : unrecognized character escape sequence

那么,为什么 TCL 不尝试寻找\d\s\S 转义符号而只是忽略 \-s 而 C++ 却尝试并很烂?

附言我记得 PHP 就像 TCL 一样工作。

最佳答案

这就是 C++ 和 PHP 的不同之处;在 PHP 中,反斜杠后面的字符与一小组特殊字符匹配(我相信 "rnvtx")。如果匹配失败,它将继续而不改变含义。

但是,C++ 期望字符在那个小集合中(顺便说一句,我认为这个集合更大)但是如果匹配失败,您将看到一个错误。

关于php - 为什么必须在 C++ 中转义字符串文字中的反斜杠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13986708/

相关文章:

php - 计算 where 子句上每个值的 sql 结果

java - 您能解释一下 DecimalFormat API 的输出吗?

php - 管理用户的框架

php - CURL:不获取带有 unicode 字符的 url

java - 使用 PHP 解码 Java 的 JSON Unicode 值

c# - 从 native C++ 调用 C#,没有/clr 或 COM?

c++ - 动态类成员

c++ - Vector:执行函数 vector ( const vector<T,Allocator>& x );只取数组存储位置的地址?

bash - 在不重新启动 xterm 的情况下重新加载 .Xresources

facebook-graph-api - Facebook 是否支持哈希爆炸#! Ajax 可抓取的网址?