Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Klasa
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:
nazwa główna, jeśli jest obecna
katalog główny, jeśli istnieje
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:
path::iterator X = pval.begin()określa pierwszypathelement w ścieżce pathname, jeśli istnieje.X == pval.end()jesttrueto, gdyXpunkty tuż obok końca sekwencji składników.*XZwraca ciąg zgodny z bieżącym składnikiem++Xwyznacza następny składnik w sekwencji, jeśli istnieje.--Xokreśla poprzedni składnik w sekwencji, jeśli istnieje.Zmiana powoduje unieważnienie
mynamewszystkich iteratorów wyznaczających elementy w elemeciemyname.
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:
append(right);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:
string()dlastring<char, Traits, Alloc>()wstring()dlastring<wchar_t, Traits, Alloc>()u16string()dlastring<char16_t, Traits, Alloc>()u32string()dlastring<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;