Klasa path

Klasa path przechowuje obiekt typu string_type, nazywany myname tutaj do celów ekspozycji, nadaje się do użycia jako nazwa ścieżki. string_type jest synonimem , basic_string<value_type>gdzie value_type jest synonimem w wchar_t systemie Windows lub char w systemie POSIX.

Klasa opisana path tutaj jest klasą C++17 std::filesystem::path w nagłówku <filesystem> .

Aby uzyskać więcej informacji i przykłady kodu, zobacz Nawigacja systemu plików (C++).

Składnia

class path;

Konstruktory

Konstruktor opis
path Tworzy element path.

Typedefs

Nazwa typu opis
const_iterator Synonim dla elementu iterator.
iterator Iterator stałej dwukierunkowej, która wyznacza path składniki .myname
string_type Typ jest synonimem .basic_string<value_type>

Enumerations

Nazwa typu opis
format Określa format pathname konstruktorów: auto_format, native_formatlub generic_format.

Funkcje składowe

Funkcja składowa opis
append Dołącza określoną sekwencję do myname, przekonwertowanej i wstawia preferred_separator zgodnie z potrzebami.
assign myname Zamienia się na określoną sekwencję, przekonwertowaną zgodnie z potrzebami.
begin path::iterator Zwraca wyznaczanie pierwszego elementu ścieżki w ścieżce pathname, jeśli istnieje.
c_str Zwraca wskaźnik do pierwszego znaku w mynameelem.
clear myname.clear()Wykonuje polecenie .
compare Zwraca wartości porównania.
concat Dołącza określoną sekwencję do myname, przekonwertowanej (ale nie wstawia separatora) zgodnie z potrzebami.
empty Zwraca wartość myname.empty().
end Zwraca iterator końca sekwencji typu iterator.
extension Zwraca sufiks .filename()
filename Zwraca składnik nazwy pliku , mynamew szczególności empty() ? path() : *--end(). Składnik może być pusty.
generic_string Zwraca z this->string<Elem, Traits, Alloc>(al) (w systemie Windows) dowolny ukośnik odwrotny przekonwertowany na ukośnik do przodu.
generic_u16string Zwraca z u16string() (w systemie Windows) dowolny ukośnik odwrotny przekonwertowany na ukośnik do przodu.
generic_u32string Zwraca z u32string() (w systemie Windows) dowolny ukośnik odwrotny przekonwertowany na ukośnik do przodu.
generic_u8string Zwraca z u8string() (w systemie Windows) dowolny ukośnik odwrotny przekonwertowany na ukośnik do przodu.
generic_wstring Zwraca z wstring() (w systemie Windows) dowolny ukośnik odwrotny przekonwertowany na ukośnik do przodu.
has_extension Zwraca wartość !extension().empty().
has_filename Zwraca wartość !filename().empty().
has_parent_path Zwraca wartość !parent_path().empty().
has_relative_path Zwraca wartość !relative_path().empty().
has_root_directory Zwraca wartość !root_directory().empty().
has_root_name Zwraca wartość !root_name().empty().
has_root_path Zwraca wartość !root_path().empty().
has_stem Zwraca wartość !stem().empty().
is_absolute W przypadku systemu Windows funkcja zwraca wartość has_root_name() && has_root_directory(). W przypadku systemu POSIX funkcja zwraca wartość has_root_directory().
is_relative Zwraca wartość !is_absolute().
lexically_normal Zwraca myname wartość przekonwertowaną na formę normalną.
lexically_proximate Zwraca wartość lexically_relative(base), lub *this jeśli wynik jest pusty.
lexically_relative Zwraca zwracane myname względem ścieżki podstawowej przy użyciu tylko analizy leksykalnej (ciągu).
make_preferred Konwertuje każdy separator na wartość zgodnie z potrzebami preferred_separator .
native Zwraca natywną reprezentację ścieżki.
parent_path Zwraca składnik ścieżki nadrzędnej elementu myname.
preferred_separator Obiekt stały nadaje preferowany znak oddzielania składników ścieżki w zależności od systemu operacyjnego hosta.
relative_path Zwraca składnik ścieżki względnej elementu myname.
remove_filename Usuwa nazwę pliku.
replace_extension Zastępuje rozszerzenie .myname
replace_filename Zastępuje nazwę pliku.
root_directory Zwraca składnik katalogu głównego elementu myname.
root_name Zwraca składnik nazwy głównej elementu myname.
root_path Zwraca składnik ścieżki głównej elementu myname.
stem stem Zwraca składnik elementu myname.
string Konwertuje sekwencję przechowywaną w pliku myname.
swap swap(myname, right.myname)Wykonuje polecenie .
u16string Konwertuje sekwencję przechowywaną na myname UTF-16 i zwraca ją przechowywaną w obiekcie typu u16string.
u32string Konwertuje sekwencję przechowywaną w myname pliku na utF-32 i zwraca ją przechowywaną w obiekcie typu u32string.
u8string Konwertuje sekwencję przechowywaną w myname formacie UTF-8 i zwraca ją przechowywaną w obiekcie typu u8string.
value_type Typ opisuje elementy ścieżki preferowane przez system operacyjny hosta.
wstring Konwertuje sekwencję przechowywaną w myname pliku na kodowanie preferowane przez system hosta dla wchar_t sekwencji i zwraca ją przechowywaną w obiekcie typu wstring.

Operatory

Operator opis
operator= Zastępuje elementy ścieżki kopią innej ścieżki.
operator+= Różne concat wyrażenia.
operator/= Różne append wyrażenia.
operator string_type Zwraca wartość myname.

Wymagania

Nagłówek:<filesystem>

Przestrzeń nazw: std::filesystem

path::append

Dołącza określoną sekwencję do myname, przekonwertowanej i wstawia element zgodnie z potrzebami preferred_separator .

template <class Source>
path& append(const Source& source);

template <class InIt>
path& append(InIt first, InIt last);

Parametry

source
Określona sekwencja.

first
Początek określonej sekwencji.

last
Koniec określonej sekwencji.

path::assign

myname Zamienia się na określoną sekwencję, przekonwertowaną zgodnie z potrzebami.

path& assign(string_type&& source);

template <class Source>
path& assign(const Source& source);

template <class InIt>
path& assign(InIt first, InIt last);

Parametry

source
Określona sekwencja.

first
Początek określonej sekwencji.

last
Koniec określonej sekwencji.

path::begin

path::iterator Zwraca wyznaczanie pierwszego elementu ścieżki w ścieżce pathname, jeśli istnieje.

iterator begin() const;

path::c_str

Zwraca wskaźnik do pierwszego znaku w mynameelem.

const value_type* c_str() const noexcept;

path::clear

myname.clear()Wykonuje polecenie .

void clear() noexcept;

path::compare

Pierwsza funkcja porównuje elementy tej ścieżki z elementami pval. Inne funkcje skonstruują ścieżkę z ich argumentu i zwracają wynik porównania z tą ścieżką.

int compare(const path& pval) const noexcept;
int compare(const string_type& str) const;
int compare(basic_string_view<value_type> str) const;
int compare(const value_type *ptr) const;

Parametry

pval
Ścieżka do porównania.

str
Ciąg do porównania.

ptr
Wskaźnik do porównania.

path::concat

Dołącza określoną sekwencję do myname, przekonwertowanej (ale nie wstawia separatora) zgodnie z potrzebami.

template <class Source>
path& concat(const Source& source);

template <class InIt>
path& concat(InIt first, InIt last);

Parametry

source
Określona sekwencja.

first
Początek określonej sekwencji.

last
Koniec określonej sekwencji.

path::const_iterator

Synonim dla elementu iterator.

typedef iterator const_iterator;

path::empty

Zwraca wartość myname.empty().

bool empty() const noexcept;

path::end

Zwraca iterator końca sekwencji typu iterator.

iterator end() const;

path::extension

Zwraca sufiks .filename()

path extension() const;

Uwagi

Zwraca sufiks filename() X takiego, że:

Jeśli X == path(".") || X == path("..") lub jeśli X nie zawiera kropki, sufiks jest pusty.

W przeciwnym razie sufiks zaczyna się od (i zawiera) prawą kropkę.

path::filename

Zwraca składnik nazwy pliku , mynamew szczególności empty() ? path() : *--end(). Składnik może być pusty.

path filename() const;

path::format

Określa format pathname używany do interpretowania sekwencji znaków przekazanej do konstruktora path .

enum format {
    auto_format,
    native_format,
    generic_format
};

Członkowie

Wylicznik opis
auto_format Implementacja automatycznie wykrywa format. Jest to ustawienie domyślne dla konstruktorów, które przyjmują format argument.
native_format Zinterpretuj sekwencję w formacie natywnej pathname.
generic_format Zinterpretuj sekwencję w formacie nazwa_ścieżki ogólnej.

Uwagi

Ponieważ format macierzysty i format ogólny są zamienne w Windows, implementacja Microsoft traktuje wszystkie trzy moduły wyliczane w taki sam sposób. Parametr format jest udostępniany dla standardowej zgodności i przenośności. Aby uzyskać więcej informacji, zobacz specyfikację WG21 N4659 [fs.class.path].

path::generic_string

Zwraca z this->string<Elem, Traits, Alloc>(al) (w systemie Windows) dowolny ukośnik odwrotny przekonwertowany na ukośnik do przodu.

template <class Elem,
    class Traits = char_traits<Elem>,
    class Alloc = allocator<Elem>>
  basic_string<Elem, Traits, Alloc>
    generic_string(const Alloc& al = Alloc()) const;

string generic_string() const;

path::generic_u16string

Zwraca z u16string() (w systemie Windows) dowolny ukośnik odwrotny przekonwertowany na ukośnik do przodu.

u16string generic_u16string() const;

path::generic_u32string

Zwraca z u32string() (w systemie Windows) dowolny ukośnik odwrotny przekonwertowany na ukośnik do przodu.

u32string generic_u32string() const;

path::generic_u8string

Zwraca z u8string() (w systemie Windows) dowolny ukośnik odwrotny przekonwertowany na ukośnik do przodu.

string generic_u8string() const;

path::generic_wstring

Zwraca z wstring() (w systemie Windows) dowolny ukośnik odwrotny przekonwertowany na ukośnik do przodu.

wstring generic_wstring() const;

path::has_extension

Zwraca wartość !extension().empty().

bool has_extension() const;

path::has_filename

Zwraca wartość !filename().empty().

bool has_filename() const;

path::has_parent_path

Zwraca wartość !parent_path().empty().

bool has_parent_path() const;

path::has_relative_path

Zwraca wartość !relative_path().empty().

bool has_relative_path() const;

path::has_root_directory

Zwraca wartość !root_directory().empty().

bool has_root_directory() const;

path::has_root_name

Zwraca wartość !root_name().empty().

bool has_root_name() const;

path::has_root_path

Zwraca wartość !root_path().empty().

bool has_root_path() const;

path::has_stem

Zwraca wartość !stem().empty().

bool has_stem() const;

path::is_absolute

W przypadku systemu Windows funkcja zwraca wartość has_root_name() && has_root_directory(). W przypadku systemu POSIX funkcja zwraca wartość has_root_directory().

bool is_absolute() const;

path::is_relative

Zwraca wartość !is_absolute().

bool is_relative() const;

path::iterator

Iterator stałej dwukierunkowej, która wyznacza składniki ścieżki elementu myname.

class iterator
   {
   // bidirectional iterator for path
   typedef bidirectional_iterator_tag iterator_category;
   typedef path_type value_type;
   typedef ptrdiff_t difference_type;
   typedef const value_type *pointer;
   typedef const value_type& reference;
   // ...
   };

Uwagi

Klasa opisuje iterator stałej dwukierunkowej, która wyznacza path składniki myname w sekwencji:

  1. nazwa główna, jeśli jest obecna

  2. katalog główny, jeśli istnieje

  3. pozostałe elementy katalogu elementu nadrzędnego path, jeśli istnieją, kończące się nazwą pliku, jeśli istnieją

Dla pval obiektu typu path:

  1. path::iterator X = pval.begin() określa pierwszy path element w ścieżce pathname, jeśli istnieje.

  2. X == pval.end() jest true to, gdy X punkty tuż obok końca sekwencji składników.

  3. *X Zwraca ciąg zgodny z bieżącym składnikiem

  4. ++X wyznacza następny składnik w sekwencji, jeśli istnieje.

  5. --X określa poprzedni składnik w sekwencji, jeśli istnieje.

  6. Zmiana powoduje unieważnienie myname wszystkich iteratorów wyznaczających elementy w elemecie myname.

path::lexically_normal

Zwraca myname wartość przekonwertowaną na formę normalną. Konwersja jest czysto leksykalna: system plików nie jest dostępny.

path lexically_normal() const;

Uwagi

Normalizacja zwija nadmiarowe elementy, takie jak . i i .. separatory katalogów. Na przykład path("a/./b/../c").lexically_normal() daje Windowsa\c. Pusta ścieżka normalizuje się do pustej ścieżki; ścieżka, która zmniejsza się do nic znormalizowanego do .. Aby uzyskać pełny algorytm normalizacji, zobacz specyfikację WG21 N4659 [fs.path.generic].

path::lexically_proximate

Zwraca wynik .lexically_relative(base) Jeśli wynik jest pustą ścieżką, zwraca zamiast tego kopię *this .

path lexically_proximate(const path& base) const;

Parametry

base
Ścieżka podstawowa, która ma być *this proximate do.

path::lexically_relative

Zwracany myname względem basemetody , używając tylko analizy leksykalnej (ciągu). System plików nie jest dostępny.

path lexically_relative(const path& base) const;

Parametry

base
Ścieżka podstawowa do wykonania *this względem.

Uwagi

Jeśli root_name() != base.root_name()parametr lub jedna ścieżka jest bezwzględna, a druga jest względna lub jeśli ścieżka ma nazwę pliku, ale nie ma katalogu głównego, gdy baza nie, zwraca pustą ścieżkę. W przeciwnym razie określa ścieżkę względną od base do *this , wyszukując pierwszy niedopasowany element i emitując .. dla każdego pozostałego baseelementu elementu , a następnie pozostałe elementy elementu *this. Na przykład otrzymuje path("/a/d").lexically_relative("/a/b/c")..\..\d. Pełny algorytm można znaleźć w specyfikacji WG21 N4659 [fs.path.gen].

path::make_preferred

Konwertuje każdy separator na wartość zgodnie z potrzebami preferred_separator .

path& make_preferred();

path::native

Pobierz natywną reprezentację ciągu ścieżki.

const string_type& native() const noexcept;

Uwagi

Ścieżka jest dostępna w przenośnym formacie ogólnym (patrz generic_string()) lub natywnym formacie ścieżki. Ta funkcja zwraca ciąg macierzysty. W systemie POSIX format ogólny i format natywny są takie same.

W poniższym przykładzie uruchomionym w Windows ciąg ścieżki ogólnej to c:/t/temp.txt , a ciąg natywny to c:\t\temp.txt.

// Compile with /std:c++17 or higher
#include <filesystem>

int main()
{
    std::filesystem::path p(R"(c:\t\temp.txt)");
    auto native = p.native();          // Windows: L"c:\\t\\temp.txt"
    auto generic = p.generic_string(); // Windows: "c:/t/temp.txt"
}

path::operator=

Zastępuje elementy ścieżki kopią innej ścieżki.

path& operator=(const path& right);
path& operator=(path&& right) noexcept;
path& operator=(string_type&& source);

template <class Source>
path& operator=(const Source& source);

Parametry

right
Element path kopiowany do pliku path.

source
Źródło path.

Uwagi

Pierwszy operator elementu członkowskiego kopiuje right.myname do elementu myname. Drugi operator elementu członkowskiego przechodzi right.myname do elementu myname. Trzeci operator elementu członkowskiego przechodzi source do elementu myname. Czwarty operator elementu członkowskiego zachowuje się tak samo jak *this = path(source).

path::operator+=

Różne concat wyrażenia.

path& operator+=(const path& right);
path& operator+=(const string_type& str);
path& operator+=(basic_string_view<value_type> str);
path& operator+=(const value_type *ptr);
path& operator+=(value_type elem);

template <class Source>
path& operator+=(const Source& source);

template <class Elem>
path& operator+=(Elem elem);

Parametry

right
Dodana ścieżka.

str
Dodany ciąg.

ptr
Dodany wskaźnik.

elem
Dodany element value_type lub Elem.

source
Dodane źródło.

Uwagi

Funkcje składowe zachowują się tak samo jak wywołanie concat z argumentem . Przeciążenia path, string_type, basic_string_viewi zakończonych value_type* wartościami null łączy sekwencję znaków argumentu. Przeciążenia value_type i Elem łączy pojedynczy znak. Przeciążenie szablonu Source łączy przekonwertowaną sekwencję źródłową.

path::operator/=

Różne append wyrażenia.

path& operator/=(const path& right);

template <class Source>
path& operator/=(const Source& source);

Parametry

right
Dodana ścieżka.

source
Dodane źródło.

Uwagi

Funkcje składowe zachowują się tak samo jak następujące odpowiadające im wyrażenia:

  1. append(right);

  2. append(source);

path::operator string_type

Zwraca wartość myname.

operator string_type() const;

path::parent_path

Zwraca składnik ścieżki nadrzędnej elementu myname.

path parent_path() const;

Uwagi

Zwraca składnik ścieżki nadrzędnej elementu myname, w szczególności prefiks po myname usunięciu filename().native() i wszystkie bezpośrednio poprzedzające separatory katalogów. (Równie, jeśli begin() != end(), jest to połączenie wszystkich elementów w zakresie [begin(), --end()) przez kolejne zastosowanie operator/=.) Składnik może być pusty.

path::path

Konstruuje element path na różne sposoby.

path() noexcept;

path(const path& right);
path(path&& right) noexcept;

path(string_type&& source, format fmt = auto_format);

template <class Source>
path(const Source& source, format fmt = auto_format);

template <class InIt>
path(InIt first, InIt last, format fmt = auto_format);

template <class Source>
path(const Source& source, const locale& loc, format fmt = auto_format);

template <class InIt>
path(InIt first, InIt last, const locale& loc, format fmt = auto_format);

Parametry

right
Ścieżka, do której skonstruowana ścieżka ma być kopią.

source
Źródłem, którego skonstruowana ścieżka ma być kopią.

fmt
Nazwa ścieżki format używana do interpretacji source lub first/last zakresu. Wartość domyślna to auto_format.

loc
Określone ustawienia regionalne.

first
Położenie pierwszego elementu do skopiowania.

last
Położenie ostatniego elementu do skopiowania.

Uwagi

Konstruktory są konstruowane myname na różne sposoby:

W tym przypadku path() jest to myname().

W tym przypadku path(const path& right) jest to myname(right.myname).

W tym przypadku path(path&& right) jest to myname(right.myname).

W tym przypadku path(string_type&& source, format fmt) jest to myname(move(source)).

W tym przypadku template<class Source> path(const Source& source, format fmt) jest to myname(source).

W tym template<class Source> path(const Source& source, const locale& loc, format fmt)przypadku myname(source) należy uzyskać wszelkie potrzebne codecvt aspekty z usługi loc.

W tym przypadku template<class InIt> path(InIt first, InIt last, format fmt) jest to myname(first, last).

W tym template<class InIt> path(InIt first, InIt last, const locale& loc, format fmt)przypadku myname(first, last) należy uzyskać wszelkie potrzebne codecvt aspekty z usługi loc.

Parametr fmt wybiera format pathname. W Windows formaty natywne i ogólne są wymienne, dlatego implementacja Microsoft ignoruje wartość fmt.

path::preferred_separator

Obiekt stały nadaje preferowany znak oddzielania składników ścieżki w zależności od systemu operacyjnego hosta.

#if _WIN32_C_LIB
static constexpr value_type preferred_separator = L'\\';
#else // assume POSIX
static constexpr value_type preferred_separator = '/';
#endif // filesystem model now defined

Uwagi

Jest to równie dopuszczalne w większości kontekstów w systemie Windows do użycia L'/' w jego miejscu.

path::relative_path

Zwraca składnik ścieżki względnej elementu myname.

path relative_path() const;

Uwagi

Zwraca składnik mynameścieżki względnej , w szczególności sufiks myname po usunięciu root_path().native() i wszelkie natychmiast nadmiarowe separatory katalogów. Składnik może być pusty.

path::remove_filename

Usuwa nazwę pliku.

path& remove_filename();

path::replace_extension

Zastępuje rozszerzenie .myname

path& replace_extension(const path& newext = path());

Parametry

newext
Nowe rozszerzenie.

Uwagi

Najpierw usuwa sufiks extension().native() z myname. Następnie, jeśli !newext.empty() && newext[0] != dot (gdzie kropka to *path(".").c_str()), kropka jest dołączana do myname. Następnie newext jest dołączany do myname.

path::replace_filename

Zastępuje nazwę pliku.

path& replace_filename(const path& pval);

Parametry

pval
Ścieżka nazwy pliku.

Uwagi

Funkcja składowa jest wykonywana:

remove_filename();

*this /= pval;
return (*this);

path::root_directory

Zwraca składnik katalogu głównego elementu myname.

path root_directory() const;

Uwagi

Składnik może być pusty.

path::root_name

Zwraca składnik nazwy głównej elementu myname.

path root_name() const;

Uwagi

Składnik może być pusty.

path::root_path

Zwraca składnik ścieżki głównej elementu myname.

path root_path() const;

Uwagi

Zwraca składnik ścieżki głównej elementu myname, w szczególnościroot_name() / root_directory . Składnik może być pusty.

path::stem

stem Zwraca składnik elementu myname.

path stem() const;

Uwagi

stem Zwraca składnik elementu myname, w szczególności filename().native() z usuniętym ciągiem extension().native() końcowym. Składnik może być pusty.

path::string

Konwertuje sekwencję przechowywaną w pliku myname.

template <class Elem, class Traits = char_traits<Elem>, class Alloc = allocator<Elem>>
basic_string<Elem, Traits, Alloc> string(const Alloc& al = Alloc()) const;
string string() const;

Uwagi

Pierwsza funkcja składowa (szablonu) konwertuje sekwencję przechowywaną w myname taki sam sposób jak:

  1. string() dla string<char, Traits, Alloc>()

  2. wstring() dla string<wchar_t, Traits, Alloc>()

  3. u16string() dla string<char16_t, Traits, Alloc>()

  4. u32string() dla string<char32_t, Traits, Alloc>()

Druga funkcja składowa konwertuje sekwencję przechowywaną w myname elemencie na kodowanie preferowane przez system hosta dla char sekwencji i zwraca ją przechowywaną w obiekcie typu string.

path::string_type

Typ jest synonimem .basic_string<value_type>

typedef basic_string<value_type> string_type;

path::swap

swap(myname, right.myname)Wykonuje polecenie .

void swap(path& right) noexcept;

path::u16string

Konwertuje sekwencję przechowywaną na myname UTF-16 i zwraca ją przechowywaną w obiekcie typu u16string.

u16string u16string() const;

path::u32string

Konwertuje sekwencję przechowywaną w myname pliku na utF-32 i zwraca ją przechowywaną w obiekcie typu u32string.

u32string u32string() const;

path::u8string

Konwertuje sekwencję przechowywaną w myname formacie UTF-8 i zwraca ją przechowywaną w obiekcie typu u8string.

string u8string() const;

path::value_type

Typ opisuje path elementy preferowane przez system operacyjny hosta.

#if _WIN32_C_LIB
typedef wchar_t value_type;
#else // assume POSIX
typedef char value_type;
#endif // filesystem model now defined

path::wstring

Konwertuje sekwencję przechowywaną w myname pliku na kodowanie preferowane przez system hosta dla wchar_t sekwencji i zwraca ją przechowywaną w obiekcie typu wstring.

wstring wstring() const;

Zobacz też

<filesystem>
Odwołanie do plików nagłówka