我使用以下代码段创建了一个新项目:
char* strange = "(Strange??)";
cout << strange << endl;
导致以下输出:
(Strange]
这样翻译 '??)' -> ']'
调试它表明我的 char* 字符串文字实际上是那个值,而不是流翻译。这显然不是我见过的元字符序列。 也许是某种 Unicode 或宽字符序列?但是我不这么认为......我已经尝试禁用所有相关的项目设置但无济于事。
谁有解释?
- search : '问号,问号,右括号' c c++ 字符串字面量
最佳答案
您所看到的称为 trigraph .
在大人的书面语言中,任何情况下一个问号就足够了。一次不要使用多个,您将永远不会再看到它。
GCC 默认忽略三字母,因为几乎没有人有意使用它们。使用 -trigraph
选项启用它们,或告诉编译器使用 -Wtrigraphs
选项警告您。
Visual C++ 2010 也默认禁用它们并提供 /Zc:trigraphs
来启用它们。我找不到任何关于在以前的版本中启用或禁用它们的方法。
关于c++ - C/C++ 字符串文字中的未知元字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1669448/