【问题标题】:How to get system environment variables using boost library?如何使用 boost 库获取系统环境变量?
【发布时间】:2012-02-09 14:53:44
【问题描述】:

我在 windows 和 MacOS 上工作,我想获取环境变量。 如何使用boost库获取系统环境变量?

是否有来自 .NetSystem.Environment.GetEnvironmentVariable() 等价物?

【问题讨论】:

    标签: c++ boost platform-independent


    【解决方案1】:

    不需要 Boost。使用<cstdlib> 中的std::getenv,这是一个标准的C++ 函数。

    【讨论】:

    • boost 中似乎没有可移植的系统环境变量。 FileSystem 有可移植的文件名,但环境变量不可移植:Win7 有 HOMEPATH,*NIX 有 HOME,USERNAME 和 USER 相同。
    • @Arman:便携式 homedir 查找相对没用,因为 Windows 和 Unix 在必须存储用户特定数据的位置方面有非常不同的约定。
    • 是的,我同意,但是为了存储程序的常规选项,有一些约定是很有用的:在 Linux 上,通常用户程序存储 $HOME/.myset 或 windows 可能是 %userprofile%/.myset 或类似的东西。因此最好有便携的功能。
    • 问题是 std::getenv 不是线程安全的,而且似乎没有 std::dupenv。
    • @traal:如果您从另一个线程调用setenv,这只是一个问题,对吧?让线程通过进程环境进行通信对我来说听起来不是一个好主意......
    【解决方案2】:

    您可能想要一个普通的c(和++getenv() 函数,它不需要被提升。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-03
      • 2013-06-17
      • 1970-01-01
      • 2012-11-05
      • 1970-01-01
      • 2016-09-29
      • 2015-08-20
      相关资源
      最近更新 更多