2017-01-24

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

No comments:

Post a Comment

You can use some HTML elements, such as <b>, <i>, <a>, also, some characters need to be entity referenced such as <, > and & Your comment may need to be confirmed by blog author. Your comment will be published under GFDL 1.3 or later license with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.