今天我们继续来学习C++的string:
1、字符串文本
字符串文本通常会被解析成字符指针常量(const char*)或者字符数组常量(const char []),如果想要达到声名std::string常量的目的,则需要在声明时在常量字符串后加一个s,示例如下:
auto string1{ "Hello World" }; //string1为字符指针常量const char*
auto& string2{ "Hello World" }; //string2为字符数组常量const char[12]
auto string3{ "Hello World"s }; //string3为std::string
2、类模板实参推导(CTAD)
类模板实参推导(CTAD)能够让编译器根据初始化列表自动推导出数据类型,与上一个标题中对字符串的操作一样,这里面也有一个坑,就是你认为的与编译器认为的可能不是一个认为,举例如下:
vector names{ "Zhang","Wang","Li","Zhao" };
你可能认为实参推导出的类型为vector<string>,看着多像啊,如果是的话,多么完美啊,但其实不是,编译器实参推导出的类型为vector<const char *>,其实有上一个标题做铺垫,这也不是太难理解,当然了,前提是,上一个标题的内容你都理解了,好了,言归正传,如果想让实参推导出的类型为vector <string>该如果声明及初始化呢,其实答案很简单,与上一个标题一样,在初始化字符串后面加一个s就可以了:
vector names{ "Zhang"s,"Wang"s,"Li"s,"Zhao"s };