我的代码中有一个硬编码字符串(应用作文件掩码),但是编译器始终将“??-”序列更改为“〜”,例如:

const wchar_t textW[] = L"test-??-??-??.txt";

testW将是“test- ~~ ??。txt”(不带引号)。

对于非unicode字符串也是如此:
const char textA[] = "test-????-??-??.txt";

textA将是“test-?? ~~ ??。txt”(不带引号)。

我的编译器是Microsoft Visual C++ 2008。

我刚刚在Visual Studio 2013中尝试过此操作,运行时中的字符串正确,并且在我跟踪应用程序时intellisense在工具提示上显示了正确的值,但是...但是在编写模式下(当应用程序未运行时) intellisense在工具提示上显示带有tilda的错误值。

最佳答案

那是trigraph,一种表示键盘上并不总是可用的字符的方法。

此行为由/Zc:trigraphs选项控制,该选项默认情况下处于禁用状态。看来它已为您的项目启用,我建议您禁用它。

07-24 09:44
查看更多