C ++ typeid是否返回字符串类型?

时间:2015-12-01 21:15:19

标签: c++

当我们使用typeid时,即typeid(变量).name() 它是否将字符串作为输出,因为如果它确实有用,它可能有助于与字符串进行比较。

3 个答案:

答案 0 :(得分:4)

根据标准,它是一个实现定义的以null结尾的const char*

  

18.7.1 Class type_info
  ....

     

const char* name() const noexcept;

     

返回:实现定义的NTBS

     

备注:消息可能是以空字符结尾的多字节字符串(17.5.2.1.4.2),适合转换   并显示为wstring(21.3,22.4.1.4)

由于内容是实现定义的,因此无法以可靠的方式与其他字符串进行比较,除非我们将自己局限于特定的实现。

答案 1 :(得分:1)

typeid(variable).name() returns一个指向空终止字符串的指针,可以使用strcmp()进行比较。但是,检查变量类型的更好方法是

 if (typeid(a) == typeid(int)) 

答案 2 :(得分:0)

当我尝试这个时,我正在接受Ss。

#include <string>
#include <typeinfo>
#include <iostream>

using namespace std;

int main(int argc, char** argv) {
    string str = "string";
    cout << typeid(str).name();
    return 0;
}

试一试:http://cpp.sh/4lsw