本の虫

著者:江添亮
ブログ: http://cpplover.blogspot.jp/
メール: boostcpp@gmail.com
Twitter: https://twitter.com/EzoeRyou
GitHub: https://github.com/EzoeRyou

アマゾンの江添のほしい物リストを著者に送るとブログ記事のネタになる

筆者にブログのネタになる品物を直接送りたい場合、住所をメールで質問してください。

GCCの実験的なfilesystemを使う方法

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については、極めてわかりにくい場所に申し訳程度にドキュメントがある。

Linking

ドワンゴ広告

ドワンゴは本物のC++プログラマーを募集しています。

採用情報|株式会社ドワンゴ

CC BY-ND 4.0: Creative Commons — Attribution-NoDerivatives 4.0 International — CC BY-ND 4.0