¿Cómo convertir una matriz de caracteres en una cadena?
Convertir un C++ string
a una matriz de caracteres es bastante sencillo usando la c_str
función de cadena y luego haciendo strcpy
. Sin embargo, ¿cómo hacer lo contrario?
Tengo una matriz de caracteres como: char arr[ ] = "This is a test";
para volver a convertirla en:
string str = "This is a test
.
Aceptado
La string
clase tiene un constructor que toma una cadena C terminada en NULL:
char arr[ ] = "This is a test";
string str(arr);
// You can also assign directly to a string.
str = "This is another string";
// or
str = arr;
Otra solución podría verse así,
char arr[] = "mom";
std::cout << "hi " << std::string(arr);
lo que evita el uso de una variable extra.
Hay un pequeño problema que se pasa por alto en las respuestas más votadas. Es decir, la matriz de caracteres puede contener 0. Si usamos un constructor con un solo parámetro como se indicó anteriormente, perderemos algunos datos. La posible solución es:
cout << string("123\0 123") << endl;
cout << string("123\0 123", 8) << endl;
La salida es:
123
123 123