如何生成唯一的文件名或路径?

pan*_*eym 2 c++ unix windows

如何生成唯一的文件名或路径?我正在寻找适用于Unix(类似)操作系统和Windows的解决方案.

hmj*_*mjd 6

用途boost::uuid:

#include <string>
using std::string;

#include <boost/lexical_cast.hpp>
using boost::lexical_cast;

#include <boost/uuid/uuid.hpp>
using boost::uuids::uuid;

#include <boost/uuid/uuid_generators.hpp>
using boost::uuids::random_generator;

#include <boost/uuid/uuid_io.hpp>

string make_uuid()
{
    return lexical_cast<string>((random_generator())());
}
Run Code Online (Sandbox Code Playgroud)

并使用生成的UUID作为文件名(因此路径无关紧要).

  • 但这会保证唯一的文件名并处理比赛条件吗? (2认同)

Osa*_*mal 5

在两者上使用mktemp.Windows在msdn docs上有一个posix调用版本,linux调用是mktemp(3).Linux上的mktemp命令行工具顺便调用它