c++ - 如何在 unix 和 windows 中获取系统或用户临时文件夹?

标签 c++

我正在编写一个 C++ 问题。它需要在 Windows 和 Unix 操作系统上运行。

如何在不同的操作系统上获取用户或系统的 tmp 文件夹?

最佳答案

更新:感谢@RoiDanton,最新答案是std::filesystem::temp_directory_path (C++17)


试试 boost::filesystemtemp_directory_path()内部使用:

  • ISO/IEC 9945 (POSIX):由列表 TMPDIRTMP 中的第一个环境变量提供的路径、TEMPTEMPDIR。如果没有找到,"/tmp",或者,如果定义了宏__ANDROID__"/data/local/tmp"

  • Windows:Windows 报告的路径GetTempPath API函数。

有趣的是,Window 的 GetTempPath使用与 POSIX 版本类似的逻辑:列表 TMPTEMPUSERPROFILE 中的第一个环境变量。如果没有找到,则返回 Windows 目录。

这些方法主要依赖于环境变量的事实似乎有点糟糕。但这似乎是如何确定的。看到它实际上是多么平凡,您可以使用 cstdlibgetenv 函数轻松推出自己的功能,特别是如果您想要特定的订单优先级/要求或不想使用另一个图书馆。

关于c++ - 如何在 unix 和 windows 中获取系统或用户临时文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8087805/

相关文章:

c++ - 从文件读取/写入自定义对象的 vector

c++ - 媒体基础 - 如何从交叉栏中选择输入?

c++ - 程序接收信号 SIGILL,非法指令

C++ 继承可见性模式

c++ - 如何将 pragma weak 与命名空间函数一起使用?

c++ - 如何在 Mac 上启用 C++17?

c++ - 枚举所有设备路径

c++ - OpenCV 3双边滤波器函数错误

c++ - Ole 拖放故障排除

头文件中的 C++ 空接口(interface)析构函数