名前空間
変種
操作

std::filesystem::path::path

提供: cppreference.com
< cpp‎ | filesystem‎ | path
 
 
 
 
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 で指定されたように解釈される形式の std::basic_stringstd::basic_string_view またはヌル終端(ワイド)文字シーケンスを指すポインタまたは入力イテレータ source によって提供される文字シーケンス (4,5)、 または一組の入力イテレータ [first, last) として表される文字シーケンス (6) からパスを構築します。 文字型 char, char8_t, (C++20以上)char16_t, char32_t, wchar_t のいずれでも使用できます。 ネイティブな文字集合への変換方法は元の文字型によります。
  • 元の文字型が char の場合、元のエンコーディングはネイティブナローエンコーディングであると仮定されます (そのため POSIX システムでは変換が行われません)。
  • 元の文字型が char8_t の場合、 UTF-8 からネイティブファイルシステムエンコーディングへの変換が使用されます。
(C++20以上)
  • 元の文字型が char16_t の場合、 UTF-16 からネイティブファイルシステムエンコーディングへの変換が使用されます。
  • 元の文字型が char32_t の場合、 UTF-32 からネイティブファイルシステムエンコーディングへの変換が使用されます。
  • 元の文字型が wchar_t の場合、入力はネイティブワイドエンコーディングであると仮定されます (そのため Windows では変換が行われません)。
7-8) fmt で指定されたように解釈される形式の std::stringstd::basic_string_view またはヌル終端文字シーケンスを指すポインタまたは入力イテレータ source によって提供される文字シーケンス (6)、または一組の入力イテレータ [first, last) によって表される文字シーケンス (7) からパスを構築します。 使用できる文字型は char だけです。 文字エンコーディング変換を行うために loc を使用します。 value_typewchar_t の場合、 locstd::codecvt<wchar_t, char, std::mbstate_t> ファセットを使用してワイド文字との間で変換します。 そうでなければ、まず locstd::codecvt<wchar_t, char, std::mbstate_t> ファセットを使用してワイド文字に変換し、それから std::codecvt<wchar_t,value_type> ファセットを使用してファイルシステムのネイティブな文字型に変換します。

目次

[編集] 引数

p - コピーするパス
source - std::basic_stringstd::basic_string_view、ヌル終端文字列を指すポインタ、またはヌル終端文字シーケンスを指す文字値型の入力イテレータ (オーバーロード (6) では文字型は char でなけれななりません)
first, last - 文字シーケンスを指定する一組の LegacyInputIterator
fmt - どのようにパス名の形式が解釈されるかを指定する path::format 型の列挙子
loc - 使用するエンコーディング変換を定義するロケール
型の要件
-
InputItLegacyInputIterator の要件を満たさなければなりません。
-
オーバーロード (5) を使用するためには InputIt の値型は文字型 char, wchar_t, char8_t, (C++20以上)char16_t, char32_t のいずれかでなけれななりません。
-
オーバーロード (7) を使用するためには InputIt の値型は char でなけれななりません。

[編集] 例外

2, 4-8) (なし)

[編集] ノート

Unicode からの移植性のあるパス名の生成については、 u8path を参照してください。

(C++20未満)

元の文字列が char8_t のシーケンスのとき、 path のコンストラクタは UTF-8 からの作成をサポートします。

(C++20以上)

[編集]

#include <iostream>
#include <filesystem>
namespace fs = std::filesystem;
int main()
{
    fs::path p1 = "/usr/lib/sendmail.cf"; // portable format
    fs::path p2 = "C:\\users\\abcdef\\AppData\\Local\\Temp\\"; // native format
    fs::path p3 = L"D:/猫.txt"; // wide string
 
    std::cout << "p1 = " << p1 << '\n'
              << "p2 = " << p2 << '\n'
              << "p3 = " << p3 << '\n';
}

出力:

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

[編集] 関連項目

(C++17)(C++20で非推奨)
UTF-8 エンコードされた文字列から path を作成します
(関数) [edit]