Я получаю переменные окружения в win32, используя GetEnvironmentStrings()
. Возвращает char*
.
Я хочу найти в этой строке (указатель на символ) определенную переменную среды (да, я знаю, что могу использовать GetEnvironmentVariable()
, но делаю это так, потому что я также хочу напечатать все переменные среды на консоли - Я просто возлюсь).
Так что я решил преобразовать char*
в std :: string и использовать поиск по нему (я знаю, что могу также использовать функцию поиска c_string, но меня больше беспокоит попытка скопировать char*
в std::string
). Но следующий код, похоже, не копирует все char*
в std::string
(это заставляет меня думать, что в char*
есть символ \0
, но на самом деле это не конец).
char* a = GetEnvironmentStrings();
string b = string(a, sizeof(a));
printf( "%s", b.c_str() ); // prints =::=
Есть ли способ скопировать char*
в std::string
(я знаю, что могу использовать strcpy()
для копирования const char*
в строку, но не char*
).