带初始化列表的字符串赋值
String assignment with initializer lists
- 你能解释一下吗,为什么会有差异?
- 什么意思
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
代表Pointer,K
代表const,c
代表character。不知道 E
代表什么。
- 你能解释一下吗,为什么会有差异?
- 什么意思
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
代表Pointer,K
代表const,c
代表character。不知道 E
代表什么。