c++ - 设置 VS 调试器的字节顺序

标签 c++ visual-studio debugging unicode

我正在使用 VS 2012 和 C++ 编程。我有一个宽字符串

wchar_t *str = L"Hello world". 

从技术上讲,我是从文件中读取字符串的,但我不知道这是否有所不同。当我在内存窗口中查看 str 时,它看起来像这样:

00 48 00 65 00 6c 00 6c 00 6f 00 2c 00 20 00 77 00 6f 00 72 00 6c 00 64 00 21 00

如您所见,字符串以大端方式存储在内存中。

当我将鼠标悬停在我得到的字符串上时:

L"䠀攀氀氀漀Ⰰ 眀漀爀氀搀℀"

在我反转 str 的字节顺序后,内存看起来像:

48 00 65 00 6c 00 6c 00 6f 00 2c 00 20 00 77 00 6f 00 72 00 6c 00 64 00 21 00 00

悬停看起来像:

L"Hello, world!"

似乎调试器默认以 little-endian 显示 UTF-16。我的程序读取大端文件,因此不断反转所有字符串的字节序以调试它们非常繁琐。有什么方法可以更改调试器显示的字节序?

除了调试目的,我可以在大端进行所有处理。

最佳答案

不仅仅是调试器。 Visual Studio 的 wchar_t 函数与主机一样是小端。当您想要处理数据时,无论如何都需要将字符串字节序反转为小端字节序。

即使您将字符串输出到具有不同字节顺序的文件中,也值得进行此更改。字符串被定义为字节序列,无论如何,将字节顺序应用于字符串看起来很奇怪。

关于c++ - 设置 VS 调试器的字节顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21284192/

相关文章:

php - 向 C 或 C++ 中的 Php 代码发送 Http "Post"请求

c++ - 如何从 Qt Creator 中的继承类自动创建虚方法?

c# - 在 nuget 包中包含引用的项目

macos - OSX Catalina 上的 gdb 8.3.1 "not in executable format: file format not recognized"

c# - 如何创建更准确的 Break Point 或 Try/Catch

c++ - 函数模板部分特化 - 有什么解决方法吗?

c++ - 从文件到 float 的文本

visual-studio - 如何填写 BabeLua 设置?

c# - Silverlight 调试问题

asp.net - 为什么在 ASP.NET Web 应用程序上调用 WebMethod 时出现不明确的类型错误?