我試圖將應用程序從Windows移植到Linux。 在Windows中,我在windows.h中有一個GetEnvironmentStrings()
函數,它以NAME = VALUE的形式爲我提供了當前進程中的環境變量及其值。 對於Linux我使用ENVIRON變量這樣在Linux中獲取環境變量作爲UTF-8字符串
for (char **en=environ; *en; en++) {
std::string str(*en)
env.push_back(str); //env is a vector of strings
}
還是應用似乎並沒有工作。在Windows中,當我打印傳遞給env向量的字符串的大小(一個字符串向量)時,它將所有字符串的大小打印爲48個字節。 而在Linux上,大小爲8.原始應用程序使用Unicode版本(GetEnvironmentStringsW
)和 使用轉換函數WideCharToMultiByte
將返回的寬字符串轉換爲8位字符串。
我沒有足夠的知識abt字符編碼,但我想它與字符串編碼的方式有關。 任何想法可能會出錯?
你正在尋找的getenv(3)和SETENV(3)(http://linux.die.net/man/3/getenv)? – fork0 2012-07-25 14:48:03
究竟哪些不起作用? – fork0 2012-07-25 14:48:57
你的代碼看起來很好。 http://ideone.com/jUF5k 你是如何打印字符串的大小? – Roddy 2012-07-25 14:49:25