逃生顺序为?在c ++中

Ano*_*non 23 c++ string escaping trigraphs

我正在查看c ++中字符串中字符的转义序列,我注意到有一个问号的转义序列.谁能告诉我为什么会这样?这看起来有点奇怪,我无法弄清楚是什么?做一个字符串.谢谢.

Jam*_*lis 27

这是为了让问号不被误解为三元组的一部分.

例如,在

"What??!"
Run Code Online (Sandbox Code Playgroud)

"??!"将被解释为|角色.所以,你必须按如下方式逃避问号:

"What\?\?!"
Run Code Online (Sandbox Code Playgroud)

http://msdn.microsoft.com/en-us/library/bt0y4awe%28VS.80%29.aspx的示例补充

  • 默认情况下,gcc禁用三元组的解释,除非它们使用`-trigraphs`,`-ansi`或某些`-std = xxx`选项明确启用.`-Wtrigraphs`(由`-Wall`启用)也可以启用三字符序列的警告. (3认同)
  • 所有关于trigraphs:http://stackoverflow.com/questions/1234582/purpose-of-trigraph-sequences-in-c/1234618#1234618 (2认同)
  • 你只是忽略了三字母的存在......直到他们咬你的屁股. (2认同)