gpt4 book ai didi

c++ - boost::core::demangle 在 vi​​sual studio typeid().name 上

转载 作者:可可西里 更新时间:2023-11-01 10:34:47 25 4
gpt4 key购买 nike

我试图在 Windows (visual studio 2010) 上获取一个报告类类型的字符串,但没有任何成功。

由于 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 方法。

最佳答案

更新 遗憾的是,这个库在后台使用了相同的底层 demangling API:请参阅@cv_and_he 的评论

您可以尝试更新的 TypeIndex 库:

Live On Coliru

#include <boost/type_index.hpp>
#include <iostream>

class MyObject { public: virtual ~MyObject() {} };
struct Derived : MyObject {};

int main() {
MyObject o;
Derived d;

std::cout << boost::typeindex::type_id<MyObject>().pretty_name() << "\n";
std::cout << boost::typeindex::type_id<Derived>().pretty_name() << "\n";

MyObject& r = d;
std::cout << boost::typeindex::type_id_runtime(r).pretty_name() << "\n";
}

打印

MyObject
Derived
Derived

关于我的编译器

关于c++ - boost::core::demangle 在 vi​​sual studio typeid().name 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33386672/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com