std::filesystem::path::make_preferred
From cppreference.com
< cpp | filesystem | path
| path& make_preferred(); |
(C++17以降) | |
パスの汎用形式ビュー内のすべてのディレクトリ区切り文字を、推奨されるディレクトリ区切り文字に変換します。
たとえば、Windowsでは、\が推奨される区切り文字であるため、パス foo/bar は foo\bar に変換されます。
目次 |
[編集] パラメータ
(なし)
[編集] 戻り値
*this
[編集] 例外
実装定義の例外をスローする場合があります。
[編集] 例
Windowsでは区切り文字として / を使用できますが、 \ を推奨するため、 make_preferred はスラッシュをバックスラッシュに変換します。一方、POSIXでは、バックスラッシュは有効なファイル名文字であるため、 \ を区切り文字として使用しません。WindowsのパスはPOSIX上では実際には "a\\b\\c" という名前のファイルを参照します。このため、"区切り文字" は変換されません。
このコードを実行
#include <filesystem> #include <iostream> int main() { std::filesystem::path windows_path("a\\b\\c"), posix_path("a/b/c"); std::cout << "Windows path: " << windows_path << " -> " << windows_path.make_preferred() << '\n' << "POSIX path: " << posix_path << " -> " << posix_path.make_preferred() << '\n'; }
出力
// on Windows Windows path: "a\\b\\c" -> "a\\b\\c" POSIX path: "a/b/c" -> "a\\b\\c" // on POSIX Windows path: "a\\b\\c" -> "a\\b\\c" POSIX path: "a/b/c" -> "a/b/c"
[編集] 関連項目
| constexpr value_type preferred_separator [static] |
ポータブルな / に加えて使用できる代替ディレクトリセパレータ。Windows ではバックスラッシュ文字 \ です。POSIX では、ポータブルセパレータと同じフォワードスラッシュ / です。 (public static member constant) |