閑古鳥

オールドプログラマの日記。プログラミングとか病気(透析)の話とか。

boost::filesystem::unique_path関数

unique_path関数は実は引数を取るようになっています。

path unique_path(const path& model="%%%%-%%%%-%%%%-%%%%");
path unique_path(const path& model, system::error_code& ec);

デフォルト引数があるため引数を渡さなくても利用できますが、引数を渡すことで拡張子を指定したりできます。
引数の%の部分が0-fの数値(hex)に変換されます。数値はランダムで設定されます。

std::cout << unique_path("%.txt") << std::endl;

上記のようにすると、0.txt〜f.txtが出力されます。
ちなみに、名前からして「すでに存在するファイルと重なる名前」は返さないようになっているのかと思いましたが、重複チェックはしていないようです。
なので、ここで生成した名前のファイル(ディレクトリ)を作成する場合はあらかじめ返ってきたパスが存在するかチェックしてあげる必要がありますね。