为什么std :: string s("?? <")输出一个{而不是?? <正如预期的那样?

cch*_*ion 11 c++ string encoding

std::string s("??<");
std::cout << s << std::endl;
Run Code Online (Sandbox Code Playgroud)

为什么输出{而不是?<

我正在使用Visual Studio 2008.我认为它正在对它进行编码但是为什么以及如果发生了什么就会调用编码?

这个小%#$ ^*!导致我在我的(单元测试)代码中查找错误30分钟,然后我发现我的字符串被破坏了!:(

unw*_*ind 26

因为三卦.

这些是维基百科页面支持的三字母:

  • ??=#
  • ??/\
  • ??'^
  • ??([
  • ??)]
  • ??!|
  • ??<{
  • ??>}
  • ??-~

对于Visual Studio,根据文档,默认情况下关闭三字符(足够明智),因此请检查您的项目/ makefile.

  • 看起来ASP也使用了Digraphs:`<%` - >`{`,`%>` - >`}` (2认同)