Я пытаюсь получить строку, сообщающую тип класса без оформления на окнах (visual studio 2010), без каких-либо успехов.boost :: core :: demangle on visual studio typeid(). Name
Поскольку UnDecorateName не работает, я использую библиотеки boost.
#include <typeinfo>
#include <boost/core/demangle.hpp>
class MyObject{};
int main (int argc, char ** argv)
{
MyObject o;
const char * str = typeid(o).name(); // str = "class MyObject"
std::string dstr = boost::core::demangle(str); // dstr = "class MyObject"
return 0;
}
Как я могу получить только «MyObject» в качестве выходной строки из кода выше? Прямо сейчас я не могу использовать методы C++ 11.
как о каких-то просто строках (т.е. удалить первые 6 символов)? –
Это не работает во всех случаях. например: int *. – mrgiov
Просто найдите ключевые слова class/struct/union/enum и удалите их из строки. –