名前空間
変種
操作

std::filesystem::path::make_preferred

From cppreference.com
< cpp‎ | filesystem‎ | path
 
 
 
 
path& make_preferred();
(C++17以降)

パスの汎用形式ビュー内のすべてのディレクトリ区切り文字を、推奨されるディレクトリ区切り文字に変換します。

たとえば、Windowsでは、\が推奨される区切り文字であるため、パス foo/barfoo\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) [編集]
English 日本語 中文(简体) 中文(繁體)