gpt4 book ai didi

c++ - 在 Linux 中获取环境变量作为 UTF-8 字符串

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:38:35 25 4
gpt4 key购买 nike

我正在尝试将应用程序从 Windows 移植到 Linux。在 Windows 中,我在 windows.h 中有一个 GetEnvironmentStrings() 函数,它以 NAME=VALUE 的形式为我提供当前进程中的环境变量及其值。对于 Linux,我使用这样的环境变量

for (char **en=environ; *en; en++)   {
std::string str(*en)
env.push_back(str); //env is a vector of strings
}

应用程序似乎仍然无法正常工作。在 Windows 中,当我打印传递给 env vector (字符串 vector )的字符串大小时,它会将所有字符串的大小打印为 48 个字节。 而在 Linux 上,大小为 8。原始应用程序使用 Unicode 版本 (GetEnvironmentStringsW) 和 使用转换函数 WideCharToMultiByte 将返回的宽字符串转换为 8 位字符串。

我对字符编码的了解不够,但我想这与字符串的编码方式有关。 知道可能出了什么问题吗?

最佳答案

这似乎是相关的:

Linux: where are environment variables stored?

In order to set a value to an existing environment variable, we use an assignment expression. For instance, to set the value of the "LANG" variable to "he_IL.UTF-8", we use the following command:

LANG=he_IL.UTF-8

https://help.ubuntu.com/community/EnvironmentVariables

或者,您可以执行终端命令以使用 system() 获取环境变量.该页面会告诉您要包​​含哪些库以及正确的使用信息。

关于c++ - 在 Linux 中获取环境变量作为 UTF-8 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11652038/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com