¿Cómo convertir una matriz de caracteres en una cadena?

Resuelto RajSanpui asked hace 12 años • 5 respuestas

Convertir un C++ stringa una matriz de caracteres es bastante sencillo usando la c_strfunció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.

RajSanpui avatar Jan 22 '12 16:01 RajSanpui
Aceptado

La stringclase 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;
Mysticial avatar Jan 22 '2012 09:01 Mysticial

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.

stackPusher avatar Aug 29 '2014 21:08 stackPusher

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

Yola avatar Jul 16 '2017 14:07 Yola