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
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.