Convertir un C ++ string
en 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";
a de ser reconvertido a:
string str = "This is a test
.
const char*
, por lo que puede pasarle un literal de cadena o una matriz de caracteres (que se descompone en eso)."hello world"
son matrices. Si lo usasizeof("hello world")
, le dará el tamaño de la matriz (que es 12), en lugar del tamaño de un puntero (probablemente 4 u 8).string
constructor no funcionará, por ejemplo, con una cadena de argumento aprobada declarada comounsigned char * buffer
algo muy común en las bibliotecas de manejo de flujo de bytes.std::string str(buffer, buffer+size);
pero probablemente sea mejor quedarse con astd::vector<unsigned char>
en ese caso.str
es una función de conversión aquí. Es el nombre de la variable de cadena. Puede usar cualquier otro nombre de variable (por ejemplo ). La conversión la realiza el constructor de std :: string que se llama implícitamente.string foo(arr);
Otra solución podría verse así,
que evita usar una variable extra.
fuente
cout << "test:" + std::string(arr);
string aString(someChar);
?Hay un pequeño problema perdido en las respuestas más votadas. Es decir, la matriz de caracteres puede contener 0. Si usaremos el constructor con un solo parámetro como se indicó anteriormente, perderemos algunos datos. La posible solución es:
Salida es:
fuente
std::string
un contenedor para datos binarios y no puede estar seguro de que la matriz no contiene '\ 0'.FUERA:
fuente