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_string、 std::basic_string_view またはヌル終端(ワイド)文字シーケンスを指すポインタまたは入力イテレータ source
によって提供される文字シーケンス (4,5)、 または一組の入力イテレータ [first
, last
) として表される文字シーケンス (6) からパスを構築します。 文字型 char, char8_t, (C++20以上)char16_t, char32_t, wchar_t のいずれでも使用できます。 ネイティブな文字集合への変換方法は元の文字型によります。- 元の文字型が char の場合、元のエンコーディングはネイティブナローエンコーディングであると仮定されます (そのため POSIX システムでは変換が行われません)。
| (C++20以上) |
- 元の文字型が char16_t の場合、 UTF-16 からネイティブファイルシステムエンコーディングへの変換が使用されます。
- 元の文字型が char32_t の場合、 UTF-32 からネイティブファイルシステムエンコーディングへの変換が使用されます。
- 元の文字型が wchar_t の場合、入力はネイティブワイドエンコーディングであると仮定されます (そのため Windows では変換が行われません)。
7-8)
fmt
で指定されたように解釈される形式の std::string、 std::basic_string_view またはヌル終端文字シーケンスを指すポインタまたは入力イテレータ source
によって提供される文字シーケンス (6)、または一組の入力イテレータ [first
, last
) によって表される文字シーケンス (7) からパスを構築します。 使用できる文字型は char だけです。 文字エンコーディング変換を行うために loc
を使用します。 value_type
が wchar_t の場合、 loc
の std::codecvt<wchar_t, char, std::mbstate_t> ファセットを使用してワイド文字との間で変換します。 そうでなければ、まず loc
の std::codecvt<wchar_t, char, std::mbstate_t> ファセットを使用してワイド文字に変換し、それから std::codecvt<wchar_t,value_type> ファセットを使用してファイルシステムのネイティブな文字型に変換します。目次 |
[編集] 引数
p | - | コピーするパス |
source | - | std::basic_string、 std::basic_string_view、ヌル終端文字列を指すポインタ、またはヌル終端文字シーケンスを指す文字値型の入力イテレータ (オーバーロード (6) では文字型は char でなけれななりません) |
first, last | - | 文字シーケンスを指定する一組の LegacyInputIterator |
fmt | - | どのようにパス名の形式が解釈されるかを指定する path::format 型の列挙子 |
loc | - | 使用するエンコーディング変換を定義するロケール |
型の要件 | ||
-InputIt は LegacyInputIterator の要件を満たさなければなりません。 | ||
-オーバーロード (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 のシーケンスのとき、 | (C++20以上) |
[編集] 例
Run this code
#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 を作成します(関数) |