C++中用于表示问号的转义序列是什么?

24

我在查看C++字符串中的字符转义序列时发现了一个问号的转义序列。 有人可以告诉我为什么会有这个吗? 这似乎有点奇怪,我无法弄清楚在字符串中 ? 的作用是什么。谢谢。

1个回答

27

3
默认情况下,gcc禁用三字符解释功能,除非使用"-trigraphs"、"-ansi"或一些"-std=xxx"选项明确启用。"-Wtrigraphs" (通过"-Wall"启用)也会使三字符序列出现警告。 - Adam Rosenfield
2
有关三字符组的一切:https://dev59.com/mnM_5IYBdhLWcg3ww2Ob#1234618 - Michael Burr
2
你只是忽略了三字符的存在... 直到它们咬了你的屁股。 - Matthieu M.
@Mattihieu - 这基本上就是我所做的,这真的不是问题。每7或8年重新学习为什么我讨厌三字符符号的代价是可以接受的,因为在任何其他时间都不必担心它们。但是,GCC默认禁用它们是正确的(我认为)。 - Michael Burr
1
另一种编写指定字符串的方法是"What?""?!"(因为编译器将在预处理器查找(并未找到)三字母序列后连接文字。当使用数字转义后跟随数字时,打破字符串文字也很有用[e.g. 如果想要 "Hello" 后面跟着一个零字节再跟着数字3,则可以使用 "Hello\0""3"。顺便说一下,对于 ?,可以使用 \x3F 跟随一个非十六进制数字,或者使用 \077 - supercat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接