方法一:借助管道通过 c++filt -t
main.cpp
#include <iostream>
#include <typeinfo>
int main() {
std::cout << typeid(int).name() << std::endl;
std::cout << typeid(long).name() << std::endl;
std::cout << typeid(float).name() << std::endl;
std::cout << typeid(double).name() << std::endl;
std::cout << typeid(long long).name() << std::endl;
std::cout << typeid(bool).name() << std::endl;
std::cout << typeid(std::string).name() << std::endl;
std::cout << typeid(std::vector<int>()).name() << std::endl;
return 0;
}
编译运行
clang++ main.cpp -o main
./main | c++filt -t
方法二:借助头文件<cxxabi.h>
main.cpp
#include <iostream>
#include <typeinfo>
#include <cxxabi.h>
#include <deque>
int main() {
std::cout << abi::__cxa_demangle(typeid(int).name(), nullptr, nullptr, nullptr) << std::endl;
std::cout << abi::__cxa_demangle(typeid(long).name(), nullptr, nullptr, nullptr) << std::endl;
std::cout << abi::__cxa_demangle(typeid(float).name(), nullptr, nullptr, nullptr) << std::endl;
std::cout << abi::__cxa_demangle(typeid(double).name(), nullptr, nullptr, nullptr) << std::endl;
std::cout << abi::__cxa_demangle(typeid(long long).name(), nullptr, nullptr, nullptr) << std::endl;
std::cout << abi::__cxa_demangle(typeid(bool).name(), nullptr, nullptr, nullptr) << std::endl;
std::cout << abi::__cxa_demangle(typeid(std::string).name(), nullptr, nullptr, nullptr) << std::endl;
std::cout << abi::__cxa_demangle(typeid(std::deque<int>()).name(), nullptr, nullptr, nullptr) << std::endl;
return 0;
}