如何可移植(我最感兴趣的是windows和linux)在指定的目录中生成一个新的文件名,具有指定的文件名前缀和后缀?
std::string UniqueName(std::string const& dir, std::string const& prefix,
std::string const& suffix);
实现此功能的任何建议,尽可能少地依赖特定平台。
最佳答案
请注意,错误的做法是一个安全漏洞。有一些技巧可以利用临时(ish)文件,这些可以让管理员访问整个系统,而不仅仅是你的应用程序。参见 this寻求一些建议。
有几种方法可以做到这一点:
- 尽可能使用库提供的函数,而不是自己编写。例如,在 Windows 中使用
GetTempFileName
, 在 Linux 上使用mkstemp
. - 使用
boost::filesystem::unique_path
,它可以让您根据您提供的模板可靠地生成唯一的文件名。
boost::filesystem
计划成为 C++ TR2 的一部分, future 几乎所有编译器都应该支持它。请注意,您必须 #define BOOST_FILESYSTEM_VERSION 3
( info ),否则您将获得不支持 unique_path 的旧版本
。boost::filesystem
关于c++ - 可移植生成指定目录下的新文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4107528/