📜  c++ 获取类型名称 - C++ (1)

📅  最后修改于: 2023-12-03 15:29:53.126000             🧑  作者: Mango

C++获取类型名称

在C++中,可以使用typeid运算符获取类型信息。具体而言,typeid返回的是一个类型的std::type_info对象,从中可以获取类型的名称。

#include <iostream>
#include <typeinfo>

int main()
{
    int a = 3;
    std::cout << typeid(a).name() << std::endl;
    
    return 0;
}

运行上述代码,输出结果为:

i

输出结果表示a的类型是int,类型名称为i

需要注意的是,typeid返回的类型名称并不一定是我们所熟悉的类型名称,因为C++标准没有规定类型名称的具体格式,这个名称有可能因编译器而异。为了得到可读性更好的类型名称,可以使用第三方库,例如Boost.TypeIndex和GSL的type_name函数。

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

int main()
{
    int a = 3;
    std::cout << boost::typeindex::type_id<decltype(a)>().pretty_name() << std::endl;
    
    return 0;
}

运行上述代码,输出结果为:

int

输出结果为所求类型的名称,即int

总之,获取类型名称是C++开发中经常遇到的任务之一。虽然标准库提供了typeid运算符,但是其返回的类型名称未必能够满足需求。因此,使用第三方库来获取可读性更好的类型名称是一个不错的选择。