En realidad, es seguro. Pero eso es solo porque está inicializando el char array
así, que es extremadamente importante. Considere el siguiente código:
#include <string.h>
#include <iostream>
#include <string>
std::string alloc_string(bool fill)
{
char buf[128] = ""; // Proper declaration/initialization of the array.
if (fill)
{
strcpy(buf, "qwerty");
}
return buf;
}
int main()
{
std::string empty_str = alloc_string(false);
std::cout << "empty_str size is: " << empty_str.size() << std::endl;
std::string str = alloc_string(true);
std::cout << "str size is: " << str.size() << std::endl;
std::cout << "str: " << str << std::endl;
}
Salidas:
empty_str size is: 0
str size is: 6
str: qwerty
en realidad el título de la pregunta es incorrecto. Estás devolviendo la matriz de caracteres como std :: cadena. – Benoit
Editado el título de la pregunta. –