首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将std::string_view转换为std::string?

如何将std::string_view转换为std::string?
EN

Stack Overflow用户
提问于 2021-05-21 18:57:06
回答 3查看 5.7K关注 0票数 0

在C中,std::string_view是对char*的一种替代。它是一个字符串,不会从一个地方复制到另一个地方,就像char*只是不时引用的内存中的一个位置一样。

但是,对于接受字符串的函数,有时我们需要将其转换为字符串。

我该怎么做?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-05-21 19:01:57

std::string有将接受std::string_view作为输入的构造函数,例如:

代码语言:javascript
运行
复制
std::string_view sv{...};
std::string s1{sv};
std::string s2{sv, index, length};

或者,您可以使用接受一个std::string和长度作为输入的char*构造函数,例如:

代码语言:javascript
运行
复制
std::string_view sv{...};
std::string s1{sv.data(), sv.size()};
std::string s2{sv.data()+index, length};
票数 8
EN

Stack Overflow用户

发布于 2021-05-21 20:19:10

std::string作为该构造函数的构造函数,但仅为显式构造函数。

代码语言:javascript
运行
复制
void f(std::string s);

std::string_view sv;
f(sv); // Error! Cannot convert implicitly
f(std::string{sv}); // Works fine.

这样的设计是为了防止意外的内存分配。

请参阅std::basic_string::basic_string (10)文档

票数 5
EN

Stack Overflow用户

发布于 2021-05-21 18:57:25

只需使用std::string的构造函数:

代码语言:javascript
运行
复制
 std::string{my_string_view}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67642553

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档