C++17には<filesystem>が追加される。GCCは実験的な実装として<experimental/filesystem>を実装している。
これを使えば、例えば以下のようにディレクトリを列挙できる。
#include <experimental/filesystem>
namespace fs = std::experimental::filesystem ;
int main()
{
fs::directory_iterator iter("/usr/bin"), end ;
std::copy( iter, end, std::ostream_iterator<fs::path>(std::cout, "\n") ) ;
}
GCCのfilesystemは、実験的な実装であるので、ヘッダーファイルが<experimental/filesystem>であることに加え、デフォルトではライブラリがリンクされない。
GCCのfilesystemを使うにはライブラリとして、libstdc++fs.aとリンクしなければならない。これは、gccに-lstdc++fsオプションを渡すとよい。また、libstdc++fsにshared library版はないので、安全のためにコマンドラインオプションの最後に書くべきだ。
g++ -std=c++1z その他のオプション... -lstdc++fs
libstdc++fsについては、極めてわかりにくい場所に申し訳程度にドキュメントがある。
ドワンゴ広告
ドワンゴは本物のC++プログラマーを募集しています。
CC BY-ND 4.0: Creative Commons — Attribution-NoDerivatives 4.0 International — CC BY-ND 4.0
No comments:
Post a Comment