Переменные среды находятся в символе * как получить их в std :: string

Я получаю переменные среды в win32 с помощью GetEnvironmentStrings () . Он возвращает ] char * .

Я хочу найти в этой строке (указатель char) конкретную переменную среды (да, я знаю, что могу использовать GetEnvironmentVariable () , но я делаю это так, потому что я также хочу напечатать все переменные среды на консоли - я просто возился.)

Итак, я решил преобразовать char * в std :: string и использовать на нем find ( Я знаю, что могу также использовать функцию поиска c_string, но меня больше беспокоит попытка скопировать char * в std :: string ). Но следующий код, похоже, не копирует весь char * в std :: string (это заставляет меня думать, что в [1112442] есть символ \ 0 9] char * , но это еще не конец.

char* a = GetEnvironmentStrings();
string b = string(a, sizeof(a));
printf( "%s", b.c_str() );  // prints =::= 

Есть ли способ скопировать char * в std :: string (я знаю, что могу используйте strcpy () , чтобы скопировать const char * в строку, но не char * ).

6
задан Xeo 12 June 2011 в 12:36
поделиться