我正在编写一个 C++ 问题。它需要在 Windows 和 Unix 操作系统上运行。
如何在不同的操作系统上获取用户或系统的 tmp 文件夹?
最佳答案
更新:感谢@RoiDanton,最新答案是std::filesystem::temp_directory_path
(C++17)
试试 boost::filesystem
的temp_directory_path()
内部使用:
ISO/IEC 9945 (POSIX):由列表
TMPDIR
、TMP
中的第一个环境变量提供的路径、TEMP
、TEMPDIR
。如果没有找到,"/tmp"
,或者,如果定义了宏__ANDROID__
,"/data/local/tmp"
Windows:Windows 报告的路径
GetTempPath
API函数。
有趣的是,Window 的 GetTempPath
使用与 POSIX 版本类似的逻辑:列表 TMP
、TEMP
、USERPROFILE
中的第一个环境变量。如果没有找到,则返回 Windows 目录。
这些方法主要依赖于环境变量的事实似乎有点糟糕。但这似乎是如何确定的。看到它实际上是多么平凡,您可以使用 cstdlib
的 getenv
函数轻松推出自己的功能,特别是如果您想要特定的订单优先级/要求或不想使用另一个图书馆。
关于c++ - 如何在 unix 和 windows 中获取系统或用户临时文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8087805/