c++ - resueltos - ¿Cómo convertir una matriz de caracteres en una cadena?
leer cadena de caracteres en c (4)
Convertir una string
C ++ en una matriz de caracteres es bastante sencillo usando la función c_str
de la cadena y luego c_str
strcpy
. Sin embargo, ¿cómo hacer lo contrario?
Tengo una matriz de caracteres como: char arr[ ] = "This is a test";
para convertir de nuevo a: string str = "This is a test
.
Hay un pequeño problema perdido en las respuestas más votadas. Es decir, la matriz de caracteres puede contener 0. Si usaremos un constructor con un solo parámetro como se señaló 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
La clase de string
tiene un constructor que toma una cadena en 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 tener este aspecto,
char arr[] = "mom";
std::cout << "hi " << std::string(arr);
lo que evita el uso de una variable extra.
#include <stdio.h>
#include <iostream>
#include <stdlib.h>
#include <string>
using namespace std;
int main ()
{
char *tmp = (char *)malloc(128);
int n=sprintf(tmp, "Hello from Chile.");
string tmp_str = tmp;
cout << *tmp << " : is a char array beginning with " <<n <<" chars long/n" << endl;
cout << tmp_str << " : is a string with " <<n <<" chars long/n" << endl;
free(tmp);
return 0;
}
AFUERA:
H : is a char array beginning with 17 chars long
Hello from Chile. :is a string with 17 chars long