Cuando se construye un std::string
de un const char*
, a menudo utilizo el siguiente patrón:lenguaje apropiado para la asignación std :: string
const char* p = GetString();
std::string s(p);
supongo que podría utilizar el patrón similar:
const char* p = GetString();
std::string s = p;
Pero , cuando deseo asignar, en lugar de construir, a un std::string
desde un const char*
, tengo demasiadas opciones:
s = p;
s.assign(p);
std::string(p).swap(s);
¿Las opciones anteriores son más o menos equivalentes? ¿Cuál debería preferir, y por qué?
Prefiero s = GetString(); ya que no tiene ninguna posibilidad de darle una función accidental (Most Vexing Parse - http://en.wikipedia.org/wiki/Most_vexing_parse) – dascandy