在VS调试器中显示UTF-16字符串

时间:2014-01-06 22:06:13

标签: c++ visual-studio-2012 unicode

我正在VS 2012中开发一个C ++程序。我的程序需要支持几种不同的语言,所以我使用的是UTF-16。当我在调试时将鼠标悬停在字符串上时,Visual Studio会显示字符串的内容。不幸的是,当该字符串不是英文时,显示是乱码。以下是它的外观示例:

L"×××× ×ª××ר  ××× ×× ××§×  ×¢×× ××× ×ר×× ××¨× ×ש×××× ××תר"

有没有办法让VS在调试时正确显示字符串?

感谢。

1 个答案:

答案 0 :(得分:0)

事实证明我的问题是我没有以二进制模式打开文件,这就是为什么字符串搞砸了。您应该打开这样的二进制文件:

std::wifstream in(fileName,std::ios::binary);
in.imbue(std::locale(in.getloc(),
  new std::codecvt_utf16<wchar_t, 0x10ffff, std::consume_header>));