C++ 原始字符文字

C++ 原始字符文字,c++,c++11,character,string-literals,C++,C++11,Character,String Literals,我不知道我是否错过了什么或者它真的不存在。在C++11标准中,添加了: string s = "\\w\\\\\\w"; // I hope I got that right string s = R"(\w\\\w)"; // I'm pretty sure I got that right 但我所有使用原始字符文字的尝试都失败了: constexpr char bslash = R('\'); // error: missing terminating ' character const

我不知道我是否错过了什么或者它真的不存在。在C++11标准中,添加了:

string s = "\\w\\\\\\w"; // I hope I got that right
string s = R"(\w\\\w)";  // I'm pretty sure I got that right
但我所有使用原始字符文字的尝试都失败了:

constexpr char bslash = R('\'); // error: missing terminating ' character
constexpr char bslash = R'(\)'; // error: 'R' was not declared in this scope
第二次尝试被视为多字符常量!我发现使用类似原始字符文字的唯一方法是:

constexpr char slash = *R"(\)"; // All Ok.
但我不喜欢这种表示法(为了存储第一个元素的副本而取消对字符串文字的引用),因为这有点让人困惑

那么,问题是什么

  • 原始字符文本是否存在?(我没有发现任何关于他们的信息,所以我几乎可以肯定他们没有)
    • 如果存在:我应该如何编写原始字符文字
    • 如果它们不存在:为什么?是否有理由添加原始字符串文字,但避免添加原始字符文字

据我所知,在C++11中引入原始字符串文字的建议是。它基于Beman Dawes,其中包含一节关于原始字符文字:

作为一种深思熟虑的设计选择,原始字符(与字符串相反) 没有提出文字,因为没有明显的需要;逃跑 序列在性质上不构成相同的实际问题 它们在字符串文本中执行的文本

支持原始字符文字的参数是对称和 减少错误。知道允许使用原始字符串文字, 程序员可能会假定原始字符文字也是 可用。事实上,一位委员会成员无意中这样做了 阅读本文草稿时的假设。虽然结果 错误很容易纠正,有人认为最好 通过提供原始数据消除错误的可能性 首先是字符文字

如果委员会愿意,我将乐意提供拟议的措辞 添加原始字符文字


不幸的是,我在会议记录中找不到任何提及任何相关提案的讨论。第一段提到的原因很可能导致目前的情况。

这是一个很好的理由:
chara='\\';//我很确定我说得对
参见,例如,其中说“作为一种深思熟虑的设计选择,该提案不包括原始字符(相对于字符串)文字,因为没有明显的需要;转义序列在字符文字中不会像在字符串文字中那样带来相同的实际问题。”@dyp那是一个answer@ShafikYaghmour显然不是,正如评论中所说的那样@dyp我同意ShafikYaghmour关于你的言论可以作为我问题的答案。。。事实上,它指向了我所寻找的:避免原始字符文字的基本原理。有趣的是,包含支持原始字符文字的一个反参数包括对称性,这类似于一元
+
的参数,这似乎很合理++1.