在调试可视化工具中转换为 std::string (autoexp.dat)

Posted

技术标签:

【中文标题】在调试可视化工具中转换为 std::string (autoexp.dat)【英文标题】:Cast to std::string in debug visualizer (autoexp.dat) 【发布时间】:2014-08-11 10:30:59 【问题描述】:

我有一个类将std::string* 存储在字段void* data 中,并希望VS2010 的调试器将字符串显示为预览(是的,我需要它是一个空指针)。

当我尝试访问 std::string 字段作为起点时,我已经失败了。以下似乎不起作用,Visual Studio 只显示指针data

preview (
    #if ( $c.data != 0 ) (
        (((std::basic_string<char>*)$c.data))->_Myres
    ) #else (
        ""
    )
)

有什么方法可以做到这一点,或者在哪里可以找到 autoexp.dat 解析的详细错误信息?

【问题讨论】:

【参考方案1】:

尝试替换

std::basic_string<char>

std::basic_string<char,std::char_traits<char>,std::allocator<char> >

它适用于我的情况。

如果你在源代码中写一个字符串变量为

std::string foo;

然后,您将在 Visual Studio 的本地窗口中看到如下所示:

name | value | type
foo  | ""    | std::basic_string<char,std::char_traits<char>,std::allocator<char> >

我猜调试器需要这种特定类型的强制转换表达式。

【讨论】:

以上是关于在调试可视化工具中转换为 std::string (autoexp.dat)的主要内容,如果未能解决你的问题,请参考以下文章

C11工具类:字符转换

如何知道std :: string是否正确编码?

为啥在片段中从 char* 转换为 std::string 比转换为 const char* 更可取?

将 int 转换为 std::string

如何在 C++11 中将 std::string 转换为 std::u32string?

在 C++ 中将 std::string 转换为 Unicode 字符串