Приведение к std :: string в визуализаторе отладки (autoexp.dat)

У меня есть класс, который хранит std::string* в поле void* dataи хотел бы, чтобы отладчик VS2010 показывал строку в качестве предварительного просмотра (да, мне нужно, чтобы она была указателем void).

Когда я попытался получить доступ к полям std :: string в качестве отправной точки, я уже потерпел неудачу. Кажется, что следующее не работает, и Visual Studio просто показывает указатель data,

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

Есть ли способ сделать это, или любое место, где можно найти подробные сообщения об ошибках для разбора autoexp.dat?

0

Решение

Попробуй заменить

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> >

Я думаю, что отладчик нуждается в этом конкретном типе для выражения приведения.

0

Другие решения


По вопросам рекламы [email protected]