¿Tiene sentido usar const std:: string & argumentos en C++ 17?
c++17 (1)
Al obtener
string_view
en C ++ 17, obtuvimos un método barato de pasar
std::string
y
char*
a funciones que no toman posesión de la cadena y evitan hacer copias temporales.
Al usar
std::string
pasado por valor y
std::move
obtenemos el
std::move
explícito y rápido de la propiedad de cadena para las referencias de valor r y l.
Mi pregunta es: ¿hay algún beneficio en el uso de
const std::string&
como cualquier parámetro de función en el nuevo estándar C ++?
Si.
El problema con
std::string_view
es que no recuerda si apunta a una cadena terminada en nulo o no.
Si está escribiendo un contenedor para una API C que utiliza cadenas terminadas en nulo, debería copiar constantemente sus
std::string_view
s en
std::string
s para asegurarse de que tiene terminadores nulos.