Estoy recuperando las variables de entorno en win32 usando GetEnvironmentStrings()
. Devuelve un char*
.Las variables de entorno están en un char * cómo hacerlo llegar a std :: string
Quiero buscar esta cadena (puntero char) para una variable de entorno específica (sí, sé que puedo usar GetEnvironmentVariable()
pero lo hago así porque también quiero imprimir todas las variables de entorno en la consola también - I estoy jugando).
Así que pensé que iba a convertir el char*
a un std :: string & utilización encontrar en él (sé que también se puede utilizar una función C_STRING hallazgo pero estoy más preocupado por tratar de copiar un char*
en un std::string
). Pero el siguiente código parece no copiar todo el char*
en el std::string
(me hace pensar que hay un \0
en el char*
, pero en realidad no es el final).
char* a = GetEnvironmentStrings();
string b = string(a, sizeof(a));
printf("%s", b.c_str()); // prints =::=
¿Hay una manera de copiar un char*
en un std::string
(Sé que puedo utilizar para copiar un strcpy()
const char*
en una cadena, pero no un char*
).
¿Quién intenta * cerrar esto como un duplicado exacto? ¡Es una pregunta completamente diferente! – Xeo
@Xeo: Bueno, no, no es ... La función 'getenv' /' GetEnvironmentVariable' utilizada es diferente, pero el resultado es el mismo ... Todo lo que OP tiene que hacer es reemplazar la llamada 'getenv' con un 'GetEnvironmentVariable' llamada. – rubenvb
@rubenvb: Excepto GetEnvironmentStrings() devuelve un formato dudoso, que el OP requiere * ayuda * específica. No puedes simplemente reemplazar 'getenv' con' GetEnvironmentStrings() '. – Puppy