在SO文档的字符串主题中,备注部分曾经说:
自从C++14以来,建议使用
"foo"s
代替"foo"
,因为s
是一个字符串常量,它将将const char *
类型的"foo"
转换为std::string
类型的"foo"
。
我认为使用此方法唯一的优势是
std::string str = "foo"s;
取代
std::string str = "foo";
第一种情况下编译器可以进行复制省略(我想),比第二种情况中的构造函数调用更快。
尽管如此,这(目前)不能保证,因此第一个也可能调用构造函数,即复制构造函数。
忽略必须使用像std :: string
文字的情况。
std::string str = "Hello "s + "World!"s;
使用std::string
字面量比使用const char[]
字面量有什么好处吗?
std::string
构造但不能从C字符串构造的类型。 - chrisstring_view
可能更适合存储字面量,因为它不会“触及堆”。 - Paul Rooneystring_view
非常有用,但请记住,大多数std::string
的实现对于短字符串也不是最优选择。 - chris