适当的std :: string赋值习惯用法

Rob*_*obᵩ 5 c++ string

std::string从a 构造a 时const char*,我经常使用以下模式:

const char* p = GetString();
std::string s(p);
Run Code Online (Sandbox Code Playgroud)

我想我可以使用类似的模式:

const char* p = GetString();
std::string s = p;
Run Code Online (Sandbox Code Playgroud)

但是,当我想分配而不是构建一个std::string来自a时const char*,我有太多的选择:

s = p;
s.assign(p);
std::string(p).swap(s);
Run Code Online (Sandbox Code Playgroud)

选择是否大致或多或少相同?我应该选择哪个,为什么?

Xeo*_*Xeo 8

为了便于阅读,只需使用惯用语operator=进行分配.另外,直接构建std::stringconst char*.

std::string s(GetString());
s = GetString();
Run Code Online (Sandbox Code Playgroud)

  • 首选s = GetString(); 因为它没有机会给你一个偶然的功能(最多Vexing Parse - http://en.wikipedia.org/wiki/Most_vexing_parse) (3认同)