【发布时间】:2021-09-09 22:00:08
【问题描述】:
string k="*";
cout<<typeid(k).name()<<endl;
输出:Ss
cout<<typeid("*").name()<<endl;
输出:A2_c
这两者之间有什么区别导致输出不同?以及输出的含义是什么?
【问题讨论】:
标签: c++ string char cout typeid
string k="*";
cout<<typeid(k).name()<<endl;
输出:Ss
cout<<typeid("*").name()<<endl;
输出:A2_c
这两者之间有什么区别导致输出不同?以及输出的含义是什么?
【问题讨论】:
标签: c++ string char cout typeid
string k = "*" 中的k 是std::string 类的一个实例,而"*" 是一个const char[2] 数组,因为它是string literal。 k是根据数组的内容构造的,但它本身并不是这样的数组。
另外,请注意typeid()...
... 返回包含类型名称的实现定义的以空字符结尾的字符串。 不提供任何保证,特别是返回的字符串对于多种类型可能是相同的,并且在同一程序的调用之间会发生变化。
更多信息,请查看this reference documentation。
【讨论】: