私は、文字列name
は、私が開いてから読むことができるファイルを参照するかどうかを確認したいと思いますので、通常のファイルやシンボリックリンクすることができます。ファイルが通常のファイルかシンボリックリンクかどうかを調べるには、boost :: filesystemを使用しますか?
私が最初にこの使用:
std::ifstream in(name.c_str());
if (!in.is_open()) {
// throw exception!
}
をしかしname
は、ディレクトリ名に言及するとき、それは例外をスローしませんでした。今、私はこれを使用してい
:
if (!fs::exists(name) || fs::is_directory(name)) {
// throw exception!
}
しかし、それは、ディレクトリへのシンボリックリンクだ場合、それは(おそらく)スローされません。同じことがこれに当てはまります:
if (!fs::is_regular_file(name) && !fs::is_symlink(name)) {
// throw exception!
}
もっと良い方法がありますか? Boost.Filesystem v3ののよう