visual studio 2012不会将wchar_t显示为文本

use*_*250 3 c visual-studio visual-studio-debugging visual-studio-2012

我刚从visual studio 2010切换到visual studio 2012,我对visual studio 2012调试器有一个问题 - 似乎在调试c代码时,wchar_t不再显示为文本.

简单来说,考虑以下小而简单的程序:

#include <wchar.h>
int main()
{
  wchar_t *ppp = L"abcdef";
  char    *zzz = "abcedf";

  return 0;

}
Run Code Online (Sandbox Code Playgroud)

在vs2012,调试这个程序时,PPP手表显示的"a" {97},没有放大镜,让我选择的可视化.
这在vs2010上运行良好,手表显示整个文本并显示放大镜.

wchar_t的标志设置是否正确,其实我在VS 2012编译的程序,只是调试它在vs2012和VS2010:将鼠标悬停在该变量时,并在immidiate window.chars显示其价值时正确显示,在/ ZC这也发生并得到相同的结果,所以它似乎不是一个编译问题.

有人遇到过这样的问题吗?是否有任何修复或变通方法(旁边通过询问ppp,su的值强制它)?

小智 6

  1. 在您的代码中放置一个断点 main()
  2. 启动程序并等待命中调试断点
  3. ppp用鼠标右键单击
  4. 在弹出窗口中选择添加监视
  5. 打开Watch控制台
  6. ppp
  7. 右键点击 ppp
  8. 在弹出窗口中选择" 编辑值 "
  9. 通过附加",su"将"ppp"更改为"ppp,su"

您现在应该看到pppUnicode文本的内容.

更改默认输出的调试操作符是:

  • su:Unicode文本(UTF-16)
  • s8:UTF-8
  • o:八进制
  • d:小数
  • x:十六进制
  • wc:Windows类
  • wm:Windows消息
  • hr:HRESULT
  • !:关闭STL可视化
  • c:ASCII字符

,可能更多.