【问题标题】:how to watch std::wstring var in Visual Studio 6.0 debugger如何在 Visual Studio 6.0 调试器中观看 std::wstring var
【发布时间】:2012-02-25 23:47:28
【问题描述】:

我明白了

std::string str = "hello world";
std::wstring wstr = L"goodbye world";
std::cout << str << std::endl;
std::wcout << wstr << std::endl;

当我开始调试并在第三行设置断点时 在 VS 6.0 的调试器“自动”窗口中,我得到了:

std::cout   {...}
str {0x001f2de1 "hello world"}
wstr    {0x001f2e4a}

我看不到 wstr 值...

我如何配置 VS 才能做到这一点??

感谢

【问题讨论】:

  • 升级。你的编译器是出了名的可怕。
  • +1 升级编译器,VC6 是市场上最不符合标准的 C++ 编译器之一。将 VC6 升级到最新的 Service Pack,您可能会侥幸逃脱,认为它是 SP6。如果您可以迁移它,那么一定要迁移。
  • SP6 已安装,无法升级。无论如何,谢谢
  • 为什么人们仍然希望使用已经过时 14 年的编译器?
  • @PlasmaHH:通常是因为代码太旧了,而当权者决定用现代语言重写它风险太大,或者将他们的奴才暴露于现代 C++ 可能会让他们更飞行风险。

标签: c++ visual-studio debugging watch wstring


【解决方案1】:

此引用来自 VisualStudio 6.0 autoexp.dat:

------- Unicode -------

如果您的应用程序是为 Unicode 构建的,那么您将需要 Unicode
字符串自动扩展为文本,而不是
的数组 无符号短。要将 Unicode 字符串自动显示为文本, 转到工具/选项/调试选项卡并检查“显示 Unicode 字符串”。

因此,在您的 VisualStudio 6.0 中,您应该转到 Tools/Options/Debug打开“显示 Unicode 字符串”

之后你会看到:

  • std::cout {...}
  • str {0x00441d21“你好世界”}
  • wstr {0x00441cb2 "再见世界"}

【讨论】:

    【解决方案2】:

    添加手表:

    str._Bx._Ptr

    如果字符串少于 16 个字符,那么我们应该注意

    str._Bx._Buf

    【讨论】:

    • 我看到的字符串类中没有任何 _Bx 成员
    • VC6 有一个非常古老的std:: 实现。 _Bx._Buf 看起来像是来自 VC7。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-02
    • 2021-10-24
    • 1970-01-01
    • 2011-02-02
    • 1970-01-01
    相关资源
    最近更新 更多