在C中,std::string_view是对char*
的一种替代。它是一个字符串,不会从一个地方复制到另一个地方,就像char*只是不时引用的内存中的一个位置一样。
但是,对于接受字符串的函数,有时我们需要将其转换为字符串。
我该怎么做?
发布于 2021-05-21 19:01:57
std::string
有将接受std::string_view
作为输入的构造函数,例如:
std::string_view sv{...};
std::string s1{sv};
std::string s2{sv, index, length};
或者,您可以使用接受一个std::string
和长度作为输入的char*
构造函数,例如:
std::string_view sv{...};
std::string s1{sv.data(), sv.size()};
std::string s2{sv.data()+index, length};
发布于 2021-05-21 20:19:10
std::string
作为该构造函数的构造函数,但仅为显式构造函数。
void f(std::string s);
std::string_view sv;
f(sv); // Error! Cannot convert implicitly
f(std::string{sv}); // Works fine.
这样的设计是为了防止意外的内存分配。
发布于 2021-05-21 18:57:25
只需使用std::string
的构造函数:
std::string{my_string_view}
https://stackoverflow.com/questions/67642553
复制相似问题