在c++中,如何找到变量的类型?


当前回答

你可以使用typeid操作符:

#include <typeinfo>
...
cout << typeid(variable).name() << endl;

其他回答

你可以使用typeid操作符:

#include <typeinfo>
...
cout << typeid(variable).name() << endl;

如果你有一个变量

int k;

你可以使用它来获取它的类型

cout << typeid(k).name() << endl;

请看下面关于SO的帖子:类似的问题

带有abi::__cxa_demangle()的typeid操作符(仅GCC / Clang)

#include <iostream>
#include <typeinfo>
#if defined __GNUC__
#include <cxxabi.h>                     // GCC / Clang only
#endif

int main() {
    long long w;
    std::cout << typeid(w).name() << std::endl;                      // x

    #if defined __GNUC__      // GCC / Clang only
    char * name = abi::__cxa_demangle(typeid(w).name(), 0, 0, 0);
    std::cout << name << std::endl;                                  // long long
    free(name);
    #endif
}

叮当在线

如果你需要在一个类和一个已知类型之间进行比较,例如:

class Example{};
...
Example eg = Example();

你可以使用这条比较线:

bool isType = string( typeid(eg).name() ).find("Example") != string::npos;

它检查typeid名称是否包含字符串类型(typeid名称有其他损坏的数据,因此最好执行s1.find(s2)而不是==)。

通常,想要在c++中找到变量的类型是一个错误的问题。它往往是从过程性语言(例如C或Pascal)中继承下来的。

如果你想根据类型编写不同的行为,试着学习例如函数重载和对象继承。在你学习c++的第一天,这不会马上有意义,但请坚持下去。