Namespaces
Variants

std::filesystem::path:: path

From cppreference.net
path ( ) noexcept ;
(1) (C++17以降)
path ( const path & p ) ;
(2) (C++17以降)
path ( path && p ) noexcept ;
(3) (C++17以降)
path ( string_type && source, format fmt = auto_format ) ;
(4) (C++17以降)
template < class Source >
path ( const Source & source, format fmt = auto_format ) ;
(5) (C++17以降)
template < class InputIt >
path ( InputIt first, InputIt last, format fmt = auto_format ) ;
(6) (C++17以降)
template < class Source >
path ( const Source & source, const std:: locale & loc, format fmt = auto_format ) ;
(7) (C++17以降)
template < class InputIt >
path ( InputIt first, InputIt last, const std:: locale & loc, format fmt = auto_format ) ;
(8) (C++17以降)

新しい path オブジェクトを構築します。

1) 空のパスを構築します。
2) コピーコンストラクタ。ネイティブ形式とジェネリック形式の両方において、パス名が p と同じパスを構築します。
3) ムーブコンストラクタ。ネイティブ形式とジェネリック形式の両方においてパス名が p と同じパスを構築する。 p は有効だが未規定の状態に残される。
4-6) 文字シーケンスからパスを構築します(フォーマットは fmt で指定された通りに解釈されます)。ソースは source (4,5) によって提供され、これはヌル終端文字/ワイド文字シーケンスへのポインタまたは入力イテレータ、 std::basic_string または std::basic_string_view 、あるいは入力イテレータのペア [ first , last ) として表現されます (6) 。文字型 char char8_t (C++20以降) char16_t char32_t wchar_t のいずれも使用可能であり、ネイティブ文字セットへの変換方法は source で使用される文字型に依存します。
  • ソース文字型が char の場合、ソースのエンコーディングはネイティブナローエンコーディングであると仮定されます(したがってPOSIXシステムでは変換は行われません)。
  • ソース文字型が char8_t の場合、UTF-8からネイティブファイルシステムエンコーディングへの変換が使用されます。
(C++20以降)
  • ソース文字型が char16_t の場合、UTF-16からネイティブファイルシステムエンコーディングへの変換が使用されます。
  • ソース文字型が char32_t の場合、UTF-32からネイティブファイルシステムエンコーディングへの変換が使用されます。
  • ソース文字型が wchar_t の場合、入力はネイティブワイドエンコーディングであると仮定されます(したがってWindowsでは変換は行われません)。
7,8) 文字シーケンスからパスを構築します(フォーマットは fmt で指定された通りに解釈されます)。 source によって提供される (7) 。これはヌル終端文字シーケンスへのポインタまたは入力イテレータ、 std::string std::string_view 、または入力イテレータのペア [ first , last ) で表現されます (8) 。許可される文字型は char のみです。 loc を使用して文字エンコーディング変換を実行します。 value_type wchar_t の場合、 loc std:: codecvt < wchar_t , char , std:: mbstate_t > ファセットを使用してワイド文字に変換します。それ以外の場合は、まず std:: codecvt < wchar_t , char , std:: mbstate_t > ファセットを使用してワイド文字に変換し、その後 loc std:: codecvt < wchar_t ,value_type > ファセットを使用してファイルシステムのネイティブ文字型に変換します。

(5) および (7) は、以下のいずれかの条件が満たされ、かつ Source path が同じ型でない場合にのみ、オーバーロード解決に参加します:

目次

翻訳の説明: - 「Contents」を「目次」に翻訳しました - C++関連の専門用語(Parameters、Exceptions、Notes、Example、Defect reports、See also)は原文のまま保持しました - HTMLタグ、属性、クラス名、ID、リンク先は一切変更していません - 数値や書式設定は完全に保持されています

パラメータ

p - コピーするパス
source - std::basic_string , std::basic_string_view , ヌル終端文字列へのポインタ、またはヌル終端文字シーケンスを指す文字値型を持つ入力イテレータ(オーバーロード (7) では文字型が char でなければならない)
first, last - 文字シーケンスを指定する LegacyInputIterator のペア
fmt - パス名フォーマットの解釈方法を指定する path::format 型の列挙子
loc - 使用するエンコーディング変換を定義するロケール
型要件
-
InputIt LegacyInputIterator の要件を満たさなければならない。
-
InputIt の値型は、オーバーロード (6) を使用するために、文字型 char , wchar_t , char8_t , (C++20以降) char16_t および char32_t のいずれかでなければならない。
-
InputIt の値型は、オーバーロード (8) を使用するために char でなければならない。

例外

2,4-8) 実装定義の例外をスローする可能性があります。

注記

Unicode文字列からの移植可能なパス名生成については、 u8path を参照してください。

(C++20まで)

path コンストラクタは、ソースが char8_t のシーケンスである場合にUTF-8文字列からの作成をサポートします。

(C++20以降)

#include <filesystem>
#include <iostream>
namespace fs = std::filesystem;
int main()
{
    fs::path p1 = "/usr/lib/sendmail.cf"; // 移植可能な形式
    fs::path p2 = "C:\\users\\abcdef\\AppData\\Local\\Temp\\"; // ネイティブ形式
    fs::path p3 = U"D:/猫.txt"; // UTF-32文字列
    fs::path p4 = u8"~/狗.txt"; // UTF-8文字列
    std::cout << "p1 = " << p1 << '\n'
              << "p2 = " << p2 << '\n'
              << "p3 = " << p3 << '\n'
              << "p4 = " << p4 << '\n';
}

出力:

p1 = "/usr/lib/sendmail.cf"
p2 = "C:\\users\\abcdef\\AppData\\Local\\Temp\\"
p3 = "D:/猫.txt"
p4 = "~/狗.txt"

不具合報告

以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。

DR 適用対象 公開時の動作 正しい動作
LWG 3244 C++17 Source path であってはならないという制約が欠落していた 追加された

関連項目

(C++17) (deprecated in C++20)
UTF-8エンコードされたソースから path を作成する
(関数)