将 C 样式字符串转换为 C++标准::字符串
将 C 样式字符串转换为 C++ std::string
的最佳方法是什么?过去我使用 stringstream 来完成它。有更好的办法吗?
What is the best way to convert a C-style string to a C++ std::string
? In the past I've done it using stringstream
s. Is there a better way?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
一般来说(无需声明新存储),您只需使用 1-arg 构造函数将 c 字符串更改为字符串右值:
但是,在构造字符串以通过引用函数传递它时,这不起作用(这是我的问题)刚刚遇到),例如
您需要将引用设为常量引用:
In general (without declaring new storage) you can just use the 1-arg constructor to change the c-string into a string rvalue :
However, this does not work when constructing the string to pass it by reference to a function (a problem I just ran into), e.g.
You need to make the reference a const reference:
现在还有另一种用于 char 数组的方法。与
std::vector
的初始化类似,至少我记得是这样的。And yet another way for char arrays now. Similar to
std::vector
's initialization, at least that's how I remember it.您可以直接从 C 字符串初始化
std::string
:You can initialise a
std::string
directly from a c-string:如果您的意思是
char*
为std::string
,则可以使用构造函数。或者,如果
string s
已经存在,只需编写以下内容:If you mean
char*
tostd::string
, you can use the constructor.Or if the
string s
already exist, simply write this:C++ 字符串有一个构造函数,可让您直接从 C 样式字符串构造
std::string
:或者,也可以:
正如@TrevorHickey 在注释中指出的那样,请小心确保您使用的指针正在初始化
std::string
,但不是空指针。如果是,上面的代码会导致未定义的行为。话又说回来,如果你有一个空指针,人们可能会说你根本就没有字符串。 :-)C++ strings have a constructor that lets you construct a
std::string
directly from a C-style string:Or, alternatively:
As @TrevorHickey notes in the comments, be careful to make sure that the pointer you're initializing the
std::string
with isn't a null pointer. If it is, the above code leads to undefined behavior. Then again, if you have a null pointer, one could argue that you don't even have a string at all. :-)检查字符串类的不同构造函数:文档
您可能感兴趣:
以及:
Check the different constructors of the string class: documentation
You maybe interested in:
And:
C++11
:重载字符串文字运算符C++14
:使用中的运算符std::string_literals
命名空间C++11
: Overload a string literal operatorC++14
: Use the operator fromstd::string_literals
namespace