最近在写正则表达式,看到 c++ 中的原始字符串字面量写法,能避免手动拼接转移字符,非常适合写正则、JSON 等场景。
语法&定义
参考 cppreference,描述清晰,也明确说明了避免转移字符的用途,一般写法为:
prefix(optional) R"delimiter(optional)( raw_characters )delimiter(optional)" prefix - One of L, u8, u, U
疑问
定义里和其他网络文章中都提到,可在 raw string 括号的左右两边加上 delimiter(可选),但是为什么要加 delimiter?
在 stackoverflow 的一篇回答里找到答案:
delimiter 一般可以省略,但是在 raw string 中带有 “) 字符串时加上 delimiter 可避免报错,让 c++正确的解析到 raw string 的结束字符,比如:
R”(…”)…)” → R”x(…”)…)x”