C++ 此输出有效还是编译器错误? #包括 #包括 int main(int argc,char*argv[]) { std::字符串s={123}; std::cout
您正在使用字符数组初始化字符串。C++ 此输出有效还是编译器错误? #包括 #包括 int main(int argc,char*argv[]) { std::字符串s={123}; std::cout,c++,c++11,initializer-list,C++,C++11,Initializer List,您正在使用字符数组初始化字符串。123是最新的。没有编译器错误 您正在调用的构造函数是std::string(参见以获取参考)的initializer list构造函数,如C++11标准第21.4.2/15段所述: basic_字符串(std::initializer_list init, 常量分配器&alloc=Allocator()); 效果:与基本字符串(il.begin(),il.end(),a)相同。 MSVC不支持列表初始化,因此您会收到一条消息,抱怨string不是聚合。123是
123
是最新的。没有编译器错误
您正在调用的构造函数是std::string
(参见以获取参考)的initializer list构造函数,如C++11标准第21.4.2/15段所述:
basic_字符串(std::initializer_list init,
常量分配器&alloc=Allocator());
效果:与基本字符串(il.begin(),il.end(),a)相同。
MSVC不支持列表初始化,因此您会收到一条消息,抱怨
string
不是聚合。123是{similor:
#include <iostream>
#include <string>
int main(int argc, char *argv[])
{
std::string s = {123};
std::cout << s << std::endl;
}
basic_string(std::initializer_list<CharT> init,
const Allocator& alloc = Allocator());