18

Boost.Filesystemを使用してプラットフォームのパス区切り文字を取得する方法はありますか?/パス区切り文字とは、Unixと\Windowsを意味します。

boost::filesystem::path::operator/2つのパスを適切な区切り文字で連結するために使用できることはすでに知っています。しかし、私はどちらかまたはが欲しいだけ/です\

を使用できることも知っていますが#ifdef _WIN32、Boost.Filesystemが適切な区切り文字を教えてくれることを望んでいます。

編集: Boost1.48で使用されているBoost.FilesystemAPIのバージョン3を使用したいと思います。

4

3 に答える 3

15

バージョン1.57の時点で、Boostにはより優れたソリューションがあります。これは、一定のchar/ wchar_t(異なるプラットフォームに依存します):。boost::filesystem::path::preferred_separator

詳細については、 http://www.boost.org/doc/libs/release/libs/filesystem/doc/reference.html#Operating-system-examplesを参照してください。その中にはさらに多くのシステム依存機能があります。

簡単な例:

#include <boost/filesystem.hpp>
#include <iostream>

int main() {
    std::cout << boost::filesystem::path::preferred_separator << std::endl;
}
于 2014-12-19T09:40:00.613 に答える
14

boost::filesystem::path::make_preferredチケットのようです:

効果:含まれているパス名は、優先されるネイティブ形式に変換されます。[注:Windowsでは、効果はスラッシュを円記号に置き換えることです。POSIXでは、効果はありません。-エンドノート]

例:

namespace bfs = boost::filesystem;
bfs::path slash("/");
bfs::path::string_type preferredSlash = slash.make_preferred().native();
于 2011-12-05T13:54:36.750 に答える
1

これはテストしていませんが、最近のブーストでこれを使用できるはずです。

http://www.boost.org/doc/libs/1_43_0/libs/filesystem/doc/reference.html

#include <boost/filesystem.hpp>
#include <iostream>

int main() {
    std::cout << boost::filesystem::slash<boost::filesystem::path>::value << std::endl;
}
于 2011-12-05T13:07:51.400 に答える