我试图将应用程序从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