std::experimental::filesystem::path:: path
From cppreference.net
<
cpp
|
experimental
|
fs
|
path
|
path
(
)
;
|
(1) | (filesystem TS) |
|
path
(
const
path
&
p
)
;
|
(2) | (filesystem TS) |
|
path
(
path
&&
p
)
;
|
(3) | (filesystem TS) |
|
template
<
class
Source
>
path ( const Source & source ) ; |
(4) | (filesystem TS) |
|
template
<
class
InputIt
>
path ( InputIt first, InputIt last ) ; |
(5) | (filesystem TS) |
|
template
<
class
Source
>
path ( const Source & source, const std:: locale & loc ) ; |
(6) | (filesystem TS) |
|
template
<
class
InputIt
>
path ( InputIt first, InputIt last, const std:: locale & loc ) ; |
(7) | (filesystem TS) |
新しい
path
オブジェクトを構築します。
1)
空のパスを構築します。
2)
コピーコンストラクタ。
p
のコピーを構築します。
3)
ムーブコンストラクタ。
p
のコピーを構築し、
p
は有効だが未規定の状態に残される。
4,5)
文字シーケンスからパスを構築します。文字シーケンスは
source
(4)
によって提供され、これはヌル終端文字/ワイド文字シーケンスへのポインタまたは入力イテレータ、あるいは
std::basic_string
か、入力イテレータのペア [
first
,
last
)
(5)
として表現されます。4つの文字型
char
、
char16_t
、
char32_t
、
wchar_t
のいずれも使用可能で、ネイティブ文字セットへの変換方法は
source
で使用される文字型に依存します。
-
- ソース文字型が char の場合、ソースのエンコーディングはネイティブナローエンコーディングであると仮定されます(したがってPOSIXシステムでは変換は行われません)。
- ソース文字型が char16_t の場合、UTF-16からネイティブファイルシステムエンコーディングへの変換が使用されます。
- ソース文字型が char32_t の場合、UTF-32からネイティブファイルシステムエンコーディングへの変換が使用されます。
- ソース文字型が wchar_t の場合、入力はネイティブワイドエンコーディングであると仮定されます(したがってWindowsでは変換は行われません)。
6,7)
パスを構築します。文字シーケンスは
source
(6)
によって提供されます。これは、ヌル終端文字シーケンスへのポインタまたは入力イテレータ、あるいは
std::string
です。または入力イテレータのペア [
first
,
last
)
(7)
として表現されます。許可される文字型は
char
のみです。
loc
を使用して文字エンコーディング変換を実行します。
value_type
が
wchar_t
の場合、
std::
codecvt
<
wchar_t
,
char
,
std::
mbstate_t
>
ファセットを使用してワイド文字に変換します。それ以外の場合は、まず
std::
codecvt
<
wchar_t
,
char
,
std::
mbstate_t
>
ファセットを使用してワイド文字に変換し、次に
std::
codecvt
<
wchar_t
, value_type
>
ファセットを使用してファイルシステムのネイティブ文字型に変換します。
目次 |
パラメータ
| p | - | コピーするパス |
| source | - | std::basic_string 、ヌル終端文字列へのポインタ、またはヌル終端文字シーケンスを指す文字値型を持つ入力イテレータ(オーバーロード (6) では文字型が char でなければならない) |
| first, last | - | UTF-8エンコードされた文字シーケンスを指定する LegacyInputIterator s のペア |
| loc | - | 使用するエンコーディング変換を定義するロケール |
| 型要件 | ||
-
InputIt
は
LegacyInputIterator
の要件を満たさなければならない。
|
||
-
InputIt
の値型は、オーバーロード
(5)
を使用するために
char
、
wchar_t
、
char16_t
、
char32_t
の4つの文字型のいずれかでなければならない。
|
||
-
InputIt
の値型は、オーバーロード
(7)
を使用するために
char
でなければならない。
|
||
例外
1,2)
(なし)
3)
noexcept
指定子:
noexcept
4-7)
(なし)
注記
ユニコード文字列からの移植性のあるパス名生成については、 u8path を参照してください。
例
このコードを実行
#include <experimental/filesystem> #include <iostream> namespace fs = std::experimental::filesystem; int main() { fs::path p1 = "/usr/lib/sendmail.cf"; // 移植可能な形式 fs::path p2 = "C:\\users\\abcdef\\AppData\\Local\\Temp\\"; // ネイティブ形式 fs::path p3 = L"D:/猫.txt"; // ワイド文字列 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"
関連項目
UTF-8エンコードされたソースから
path
を作成する
(関数) |