当从const char*
构建std::string
,我经常使用以下模式:正确的成语的std :: string分配
const char* p = GetString();
std::string s(p);
我想我可以用类似的模式:
const char* p = GetString();
std::string s = p;
但,当我想从const char*
分配而不是构建std::string
时,我的选择太多了:
s = p;
s.assign(p);
std::string(p).swap(s);
上面的选择或多或少是等价的吗?我应该选择哪一个,为什么?
首选s = GetString();因为这没有机会给你一个意外的功能(最痛苦的解析 - http://en.wikipedia.org/wiki/Most_vexing_parse) – dascandy