我使用GetEnvironmentStrings()
在win32中檢索環境變量。它返回一個char*
。環境變量在char *中如何獲取到std :: string
我想搜索一個特定的環境變量的字符串(字符指針)(是的,我知道我可以使用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*
)。
f *試圖將它關閉爲完全重複的情況?這是完全不同的問題! – Xeo 2011-06-12 11:54:22
@Xeo:嗯,不,它不是......使用的'getenv' /'GetEnvironmentVariable'函數是不同的,但結果是一樣的...所有OP的要做的就是用'getenv'調用'GetEnvironmentVariable'調用。 – rubenvb 2011-06-12 11:58:47
@rubenvb:GetEnvironmentStrings()除外返回一個不禮貌的格式,OP需要特定的幫助。你不能用'GetEnvironmentStrings()'替換'getenv'。 – Puppy 2011-06-12 12:00:09