如何使用boost库获取系统环境变量?

11

我在 Windows 和 MacOS 上工作,希望获取环境变量。 如何使用 Boost 库获取系统环境变量?

是否有与 .Net 中的 System.Environment.GetEnvironmentVariable() 相当的功能?

2个回答

24

不需要使用 Boost 库。可以使用标准的 C++ 函数 std::getenv,它来自于头文件 <cstdlib>


Boost中似乎没有可移植的系统环境变量。FileSystem有便携式文件名,但环境变量不是可移植的:Win7有HOMEPATH和*NIX有HOME,USERNAME和USER也是相同的。 - Arman
@Arman:便携式主目录查找相对无用,因为Windows和Unix在存储特定于用户的数据的位置上有非常不同的约定。 - Fred Foo
@Arman:你可以定义一个名为get_home的函数,如果$HOME被设置了就返回$HOME,否则返回$HOMEPATH。 - Fred Foo
2
问题在于 std::getenv 不是线程安全的,并且似乎没有 std::dupenv。 - snips-n-snails
1
@traal:只有在你从另一个线程调用setenv时才会出现这个问题,对吧?而且让线程通过进程环境进行通信听起来不是一个好主意... - Fred Foo
显示剩余4条评论

4

您可能需要一个简单的 c (和 ++) getenv() 函数,它不需要被优化。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接