“?? *”C ++转义序列

时间:2014-07-31 12:56:11

标签: c++ string escaping

请注意,标题中的*是占位符,在我的情况下,罪魁祸首是??[

我刚刚遇到了C ++(也是#34; C")转义序列,由双问号组成。这曾经用过什么,为什么还在那里?

我有ascii-85编码的文字,其中很少出现双问号,只是花了一个下午从头上撕下头发试图找到编码器/解码器中的错误,而这只是编译器上的技巧我

1 个答案:

答案 0 :(得分:1)

来自C ++标准

2.4 Trigraph sequence [lex.trigraph]

1在进行任何其他处理之前,每次出现以下三个字符序列之一(“三字符序列”)将被表1中指示的单个字符替换。 表1 - Trigraph序列Trigraph替换Trigraph替换Trigraph替换

??= # ??( [ ??< {
??/ \ ??) ] ??> }
??’ ˆ ??! | ??- ~

但是,您显示的符号??*不是三字符号。所以很难说它意味着什么。

我似乎明白这意味着什么。它们是狂野的字符?*只需在字符串文字符号?内加倍。:)