我的代码中有一个硬编码字符串(应用作文件掩码),但是编译器始终将“??-”序列更改为“〜”,例如:
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选项控制,该选项默认情况下处于禁用状态。看来它已为您的项目启用,我建议您禁用它。