C++ raw string 里 delimiter 的作用

C++ raw string 里 delimiter 的作用

Published
August 15, 2023
Author
WuZheng
最近在写正则表达式,看到 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”