带有初始值设定项列表的字符串赋值

String assignment with initializer lists

本文关键字:列表 字符串 赋值      更新时间:2023-10-16
  • 你能解释一下,为什么会有差异吗?
  • PKcE是什么意思?

法典:

#include <iostream>
#include <typeinfo>
using namespace std;
int main() {
    string s {"IDE"};
    std::cout<<typeid(s).name()<<std::endl;
    auto S{"IDE"};      // why do not deduced as string?
    std::cout<<typeid(S).name()<<std::endl;
    auto c = {"IDE"};  // why do not deduced as string?
    std::cout<<typeid(c).name()<<std::endl;   
    auto C {string{"IDE"}}; // why do not deduced as string?
    std::cout<<typeid(C).name()<<std::endl; 
    auto Z = string{"IDE"};
    std::cout<<typeid(Z).name()<<std::endl; 
}

输出:

Ss
St16initializer_listIPKcE
St16initializer_listIPKcE
St16initializer_listISsE
Ss
string s {"IDE"};  // Type of s is explicit - std::string
auto S{"IDE"};     // Type of S is an initializer list consisting of one char const*.
auto c = {"IDE"};  // Type of c is same as above.
auto C {string{"IDE"}}; // Type of C is an initializer list consisting of one std::string
auto Z = string{"IDE"}; // Type of Z is std::string

我不知道PKcE代表什么。我只能猜测P代表指针,K代表const,c代表字符。不知道E能代表什么。