Khi xây dựng một std::string
từ một const char*
, tôi thường sử dụng mô hình sau:thành ngữ đúng cho phân std :: string
const char* p = GetString();
std::string s(p);
Tôi cho rằng tôi có thể sử dụng các mô hình tương tự:
const char* p = GetString();
std::string s = p;
Nhưng , khi tôi muốn chỉ định, thay vì xây dựng, cho một số std::string
từ một số const char*
, tôi có quá nhiều lựa chọn:
s = p;
s.assign(p);
std::string(p).swap(s);
Có phải các lựa chọn ở trên tương đương nhiều hơn hoặc ít hơn không? Tôi nên thích cái nào hơn và tại sao?
Ưu tiên s = GetString(); vì điều đó không có cơ hội cho bạn một chức năng ngẫu nhiên (Hầu hết các Vexing Parse - http://en.wikipedia.org/wiki/Most_vexing_parse) – dascandy