当我们使用typeid时,即typeid(变量).name() 它是否将字符串作为输出,因为如果它确实有用,它可能有助于与字符串进行比较。
答案 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;
}