path klas

De path klasse slaat een object van het type string_typeop, hier genoemd myname voor de doeleinden van tentoonstelling, geschikt voor gebruik als padnaam. string_typeis een synoniem voor basic_string<value_type>, waar value_type een synoniem is voor wchar_t op Windows of char op POSIX.

De path klasse die hier wordt beschreven, is de C++17-klasse std::filesystem::path in de <filesystem> header.

Zie Bestandssysteemnavigatie (C++) voor meer informatie en codevoorbeelden.

Syntaxis

class path;

Constructors

Constructeur Beschrijving
path Maakt een path.

Typedefs

Typenaam Beschrijving
const_iterator Een synoniem voor iterator.
iterator Een bidirectionele constante iterator die de path onderdelen van myname.
string_type Het type is een synoniem voor basic_string<value_type>.

Enumerations

Typenaam Beschrijving
format Hiermee geeft u de padnaamindeling voor constructors: auto_format, native_formatof generic_format.

Functies voor leden

Lid, functie Beschrijving
append Hiermee voegt u de opgegeven reeks toe aan myname, converteert en voegt u indien nodig een preferred_separator in.
assign myname Vervangt door de opgegeven reeks, naar behoefte geconverteerd.
begin Retourneert een path::iterator toewijzing van het eerste padelement in de padnaam, indien aanwezig.
c_str Retourneert een aanwijzer naar het eerste teken in myname.
clear myname.clear()Wordt uitgevoerd.
compare Retourneert vergelijkingswaarden.
concat Voegt de opgegeven reeks toe aan myname, geconverteerd (maar voeg indien nodig geen scheidingsteken in).
empty Retourneert myname.empty().
end Retourneert een end-of-sequence iterator van het type iterator.
extension Retourneert het achtervoegsel van filename().
filename Retourneert het bestandsbestandsonderdeel van myname, met name empty() ? path() : *--end(). Het onderdeel is mogelijk leeg.
generic_string Retourneert this->string<Elem, Traits, Alloc>(al) met (onder Windows) een backslash die wordt geconverteerd naar een slash.
generic_u16string Retourneert u16string() met (onder Windows) een backslash die wordt geconverteerd naar een slash.
generic_u32string Retourneert u32string() met (onder Windows) een backslash die wordt geconverteerd naar een slash.
generic_u8string Retourneert u8string() met (onder Windows) een backslash die wordt geconverteerd naar een slash.
generic_wstring Retourneert wstring() met (onder Windows) een backslash die wordt geconverteerd naar een slash.
has_extension Retourneert !extension().empty().
has_filename Retourneert !filename().empty().
has_parent_path Retourneert !parent_path().empty().
has_relative_path Retourneert !relative_path().empty().
has_root_directory Retourneert !root_directory().empty().
has_root_name Retourneert !root_name().empty().
has_root_path Retourneert !root_path().empty().
has_stem Retourneert !stem().empty().
is_absolute Voor Windows retourneert has_root_name() && has_root_directory()de functie . Voor POSIX retourneert has_root_directory()de functie .
is_relative Retourneert !is_absolute().
lexically_normal Retourneert myname geconverteerd naar normale vorm.
lexically_proximate Retourneert lexically_relative(base)of *this als dat resultaat leeg is.
lexically_relative Retourneert myname alleen ten opzichte van een basispad, met behulp van lexicale (tekenreeks)-analyse.
make_preferred Converteert elk scheidingsteken naar een preferred_separator indien nodig.
native Retourneert de systeemeigen weergave van het pad.
parent_path Retourneert het bovenliggende padonderdeel van myname.
preferred_separator Het constante object geeft het voorkeursteken voor het scheiden van padonderdelen, afhankelijk van het hostbesturingssysteem.
relative_path Retourneert het relatieve padonderdeel van myname.
remove_filename Hiermee verwijdert u de bestandsnaam.
replace_extension Vervangt de extensie van myname.
replace_filename Vervangt de bestandsnaam.
root_directory Retourneert het hoofdmaponderdeel van myname.
root_name Retourneert het hoofdnaamonderdeel van myname.
root_path Retourneert het hoofdpadonderdeel van myname.
stem Retourneert het stem onderdeel van myname.
string Converteert de reeks die is opgeslagen in myname.
swap swap(myname, right.myname)Wordt uitgevoerd.
u16string Converteert de reeks die is opgeslagen in myname UTF-16 en retourneert deze opgeslagen in een object van het type u16string.
u32string Converteert de reeks die is opgeslagen in myname UTF-32 en retourneert deze die is opgeslagen in een object van het type u32string.
u8string Converteert de reeks die is opgeslagen in myname UTF-8 en retourneert deze opgeslagen in een object van het type u8string.
value_type Het type beschrijft de padelementen die worden aanbevolen door het hostbesturingssysteem.
wstring Converteert de reeks die is opgeslagen in myname de codering die wordt aanbevolen door het hostsysteem voor een wchar_t reeks en retourneert deze die is opgeslagen in een object van het type wstring.

Bedieners

Operator Beschrijving
operator= Vervangt de elementen van het pad door een kopie van een ander pad.
operator+= Verschillende concat expressies.
operator/= Verschillende append expressies.
operator string_type Retourneert myname.

Requirements

Rubriek:<filesystem>

Naamruimte:std::filesystem

path::append

Hiermee voegt u de opgegeven reeks toe aan myname, converteert en voegt u een zo nodig in preferred_separator .

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

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

Parameters

source
Opgegeven reeks.

first
Begin van de opgegeven reeks.

last
Einde van de opgegeven reeks.

path::assign

myname Vervangt door de opgegeven reeks, naar behoefte geconverteerd.

path& assign(string_type&& source);

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

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

Parameters

source
Opgegeven reeks.

first
Begin van de opgegeven reeks.

last
Einde van de opgegeven reeks.

path::begin

Retourneert een path::iterator toewijzing van het eerste padelement in de padnaam, indien aanwezig.

iterator begin() const;

path::c_str

Retourneert een aanwijzer naar het eerste teken in myname.

const value_type* c_str() const noexcept;

path::clear

myname.clear()Wordt uitgevoerd.

void clear() noexcept;

path::compare

De eerste functie vergelijkt de elementen van dit pad met pval. De andere functies maken een pad op basis van hun argument en retourneren het resultaat van het vergelijken met dit pad.

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;

Parameters

pval
Pad om te vergelijken.

str
Tekenreeks om te vergelijken.

ptr
Aanwijzer om te vergelijken.

path::concat

Voegt de opgegeven reeks toe aan myname, geconverteerd (maar voeg indien nodig geen scheidingsteken in).

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

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

Parameters

source
Opgegeven reeks.

first
Begin van de opgegeven reeks.

last
Einde van de opgegeven reeks.

path::const_iterator

Een synoniem voor iterator.

typedef iterator const_iterator;

path::empty

Retourneert myname.empty().

bool empty() const noexcept;

path::end

Retourneert een end-of-sequence iterator van het type iterator.

iterator end() const;

path::extension

Retourneert het achtervoegsel van filename().

path extension() const;

Opmerkingen

Retourneert het achtervoegsel van filename() X dat:

Als X == path(".") || X == path("..") het X achtervoegsel geen punt bevat, is het achtervoegsel leeg.

Anders begint het achtervoegsel met (en bevat) de meest rechtse punt.

path::filename

Retourneert het bestandsbestandsonderdeel van myname, met name empty() ? path() : *--end(). Het onderdeel is mogelijk leeg.

path filename() const;

path::format

Hiermee geeft u de padnaamindeling op die wordt gebruikt om de tekenreeks te interpreteren die aan een path constructor is doorgegeven.

enum format {
    auto_format,
    native_format,
    generic_format
};

Leden

Enquêteur Beschrijving
auto_format De implementatie buigt de indeling automatisch. Dit is de standaardinstelling voor de constructors die een format argument gebruiken.
native_format Interpreteer de reeks in de systeemeigen padnaamindeling.
generic_format Interpreteer de volgorde in de algemene padnaamindeling.

Opmerkingen

Omdat de systeemeigen indeling en de algemene indeling kunnen worden doorgewisseld op Windows, behandelt de Microsoft implementatie alle drie de opsommingen hetzelfde. De format parameter is opgegeven voor standaardconformantie en portabiliteit. Zie de specificatie WG21 N4659 [fs.class.path] voor meer informatie.

path::generic_string

Retourneert this->string<Elem, Traits, Alloc>(al) met (onder Windows) een backslash die wordt geconverteerd naar een slash.

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

Retourneert u16string() met (onder Windows) een backslash die wordt geconverteerd naar een slash.

u16string generic_u16string() const;

path::generic_u32string

Retourneert u32string() met (onder Windows) een backslash die wordt geconverteerd naar een slash.

u32string generic_u32string() const;

path::generic_u8string

Retourneert u8string() met (onder Windows) een backslash die wordt geconverteerd naar een slash.

string generic_u8string() const;

path::generic_wstring

Retourneert wstring() met (onder Windows) een backslash die wordt geconverteerd naar een slash.

wstring generic_wstring() const;

path::has_extension

Retourneert !extension().empty().

bool has_extension() const;

path::has_filename

Retourneert !filename().empty().

bool has_filename() const;

path::has_parent_path

Retourneert !parent_path().empty().

bool has_parent_path() const;

path::has_relative_path

Retourneert !relative_path().empty().

bool has_relative_path() const;

path::has_root_directory

Retourneert !root_directory().empty().

bool has_root_directory() const;

path::has_root_name

Retourneert !root_name().empty().

bool has_root_name() const;

path::has_root_path

Retourneert !root_path().empty().

bool has_root_path() const;

path::has_stem

Retourneert !stem().empty().

bool has_stem() const;

path::is_absolute

Voor Windows retourneert has_root_name() && has_root_directory()de functie . Voor POSIX retourneert has_root_directory()de functie .

bool is_absolute() const;

path::is_relative

Retourneert !is_absolute().

bool is_relative() const;

path::iterator

Een bidirectionele constante iterator die de padonderdelen van 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;
   // ...
   };

Opmerkingen

De klasse beschrijft een bidirectionele constante iterator die de path onderdelen in myname de reeks aanwijst:

  1. de hoofdnaam, indien aanwezig

  2. de hoofdmap, indien aanwezig

  3. de resterende mapelementen van het bovenliggende pathitem, indien aanwezig, eindigend met de bestandsnaam, indien aanwezig

Voor pval een object van het type path:

  1. path::iterator X = pval.begin() wijst het eerste path element in de padnaam aan, indien aanwezig.

  2. X == pval.end() is true wanneer X punten net voorbij het einde van de reeks onderdelen vallen.

  3. *X retourneert een tekenreeks die overeenkomt met het huidige onderdeel

  4. ++X wijst het volgende onderdeel in de reeks aan, indien aanwezig.

  5. --X wijst het voorgaande onderdeel in de volgorde aan, indien aanwezig.

  6. myname Als u wijzigingen wijzigt, worden alle iterators die elementen aanwijzen in myname.

path::lexically_normal

Retourneert myname geconverteerd naar normale vorm. De conversie is puur lexical: het bestandssysteem is niet toegankelijk.

path lexically_normal() const;

Opmerkingen

Met normalisatie worden redundante elementen, zoals . en .. adreslijstscheidingstekens, samengevouwen. Zo path("a/./b/../c").lexically_normal() levert de opbrengst a\c bijvoorbeeld op Windows. Een leeg pad normaliseert naar een leeg pad; een pad dat vermindert tot niets normaliseert tot .. Zie de specificatie WG21 N4659 [fs.path.generic] voor het volledige normalisatie-algoritme.

path::lexically_proximate

Retourneert het resultaat van lexically_relative(base). Als dat resultaat een leeg pad is, wordt in plaats daarvan een kopie geretourneerd *this .

path lexically_proximate(const path& base) const;

Parameters

base
Het basispad om proximaat te maken *this .

path::lexically_relative

Retourneert myname alleen ten opzichte basevan , met behulp van lexicale (tekenreeks)-analyse. Het bestandssysteem is niet toegankelijk.

path lexically_relative(const path& base) const;

Parameters

base
Het basispad dat *this moet worden gebruikt ten opzichte van.

Opmerkingen

Als root_name() != base.root_name(), of als het ene pad absoluut is en het andere relatief is, of als het pad een bestandsnaam heeft maar geen hoofdmap terwijl de basis dat niet doet, retourneert u een leeg pad. Anders bepaalt u het relatieve pad van base naar *this door het eerste niet-overeenkomende element te vinden en te verzenden .. voor elk resterende element van base, gevolgd door de resterende elementen van *this. Bijvoorbeeld, path("/a/d").lexically_relative("/a/b/c") geeft ..\..\d. Zie de specificatie WG21 N4659 [fs.path.gen] voor het volledige algoritme.

path::make_preferred

Converteert elk scheidingsteken naar een preferred_separator indien nodig.

path& make_preferred();

path::native

Haal de systeemeigen tekenreeksweergave van het pad op.

const string_type& native() const noexcept;

Opmerkingen

Het pad is beschikbaar in een draagbare algemene indeling (zie generic_string()) of de systeemeigen indeling van het pad. Met deze functie wordt de systeemeigen tekenreeks geretourneerd. Op een POSIX-systeem zijn de algemene indeling en de systeemeigen indeling hetzelfde.

In het volgende voorbeeld dat wordt uitgevoerd op Windows, is c:/t/temp.txt de algemene padtekenreeks en de systeemeigen tekenreeks.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=

Vervangt de elementen van het pad door een kopie van een ander pad.

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

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

Parameters

right
Het path wordt gekopieerd naar de path.

source
De bron path.

Opmerkingen

De eerste lidoperator kopieert right.myname naar myname. De tweede lidoperator wordt verplaatst right.myname naar myname. De derde lidoperator wordt verplaatst source naar myname. De vierde lidoperator gedraagt zich hetzelfde als *this = path(source).

path::operator+=

Verschillende concat expressies.

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);

Parameters

right
Het toegevoegde pad.

str
De toegevoegde tekenreeks.

ptr
De toegevoegde aanwijzer.

elem
De toegevoegde value_type of Elem.

source
De toegevoegde bron.

Opmerkingen

De lidfuncties gedragen zich hetzelfde als het aanroepen concat met het argument. De pathoverbelastingen , string_typeen basic_string_viewnull-beëindigde value_type* overbelastingen samenvoegen de tekenreeks van het argument. De value_type en Elem overbelasten samenvoegen één teken. De overbelasting van Source de sjabloon voegt de geconverteerde bronvolgorde samen.

path::operator/=

Verschillende append expressies.

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

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

Parameters

right
Het toegevoegde pad.

source
De toegevoegde bron.

Opmerkingen

De lidfuncties gedragen zich hetzelfde als de volgende bijbehorende expressies:

  1. append(right);

  2. append(source);

path::operator string_type

Retourneert myname.

operator string_type() const;

path::parent_path

Retourneert het bovenliggende padonderdeel van myname.

path parent_path() const;

Opmerkingen

Retourneert het bovenliggende padonderdeel van myname, met name het voorvoegsel van myname na het verwijderen filename().native() en eventuele direct voorafgaande directoryscheidingstekens. (Als begin() != end()het ook gaat om de combinatie van alle elementen in het bereik [begin(), --end()) door achtereenvolgens toe te passen operator/=.) Het onderdeel is mogelijk leeg.

path::path

Bouwt een path op verschillende manieren.

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);

Parameters

right
Het pad waarvan het samengestelde pad een kopie moet zijn.

source
De bron waarvan het samengestelde pad een kopie moet zijn.

fmt
De padnaam format die wordt gebruikt om het bereik te interpreteren source of het first/last bereik. Wordt standaard ingesteld op auto_format.

loc
De opgegeven landinstelling.

first
De positie van het eerste element dat moet worden gekopieerd.

last
De positie van het laatste element dat moet worden gekopieerd.

Opmerkingen

De constructors maken myname allemaal op verschillende manieren:

Want path() het is myname().

Want path(const path& right) het is myname(right.myname).

Want path(path&& right) het is myname(right.myname).

Want path(string_type&& source, format fmt) het is myname(move(source)).

Want template<class Source> path(const Source& source, format fmt) het is myname(source).

Voor template<class Source> path(const Source& source, const locale& loc, format fmt) het is myname(source), het verkrijgen van alle benodigde codecvt facetten van loc.

Want template<class InIt> path(InIt first, InIt last, format fmt) het is myname(first, last).

Voor template<class InIt> path(InIt first, InIt last, const locale& loc, format fmt) het is myname(first, last), het verkrijgen van alle benodigde codecvt facetten van loc.

De fmt parameter selecteert de padnaamindeling. Op Windows zijn de systeemeigen en algemene indelingen uitwisselbaar, dus de Microsoft implementatie negeertfmt.

path::preferred_separator

Het constante object geeft het voorkeursteken voor het scheiden van padonderdelen, afhankelijk van het hostbesturingssysteem.

#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

Opmerkingen

Het is in de meeste contexten onder Windows evengoed toegestaan om in zijn plaats te gebruikenL'/'.

path::relative_path

Retourneert het relatieve padonderdeel van myname.

path relative_path() const;

Opmerkingen

Retourneert het relatieve padonderdeel van myname, met name het achtervoegsel van myname na het verwijderen root_path().native() en eventuele onmiddellijk volgende redundante adreslijstscheidingstekens. Het onderdeel is mogelijk leeg.

path::remove_filename

Hiermee verwijdert u de bestandsnaam.

path& remove_filename();

path::replace_extension

Vervangt de extensie van myname.

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

Parameters

newext
De nieuwe extensie.

Opmerkingen

Verwijdert eerst het achtervoegsel extension().native() uit myname. !newext.empty() && newext[0] != dot Als (waar punt is*path(".").c_str()), dan wordt punt toegevoegd aan myname. Vervolgens newext wordt toegevoegd aan myname.

path::replace_filename

Vervangt de bestandsnaam.

path& replace_filename(const path& pval);

Parameters

pval
Het pad van de bestandsnaam.

Opmerkingen

De lidfunctie voert het volgende uit:

remove_filename();

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

path::root_directory

Retourneert het hoofdmaponderdeel van myname.

path root_directory() const;

Opmerkingen

Het onderdeel is mogelijk leeg.

path::root_name

Retourneert het hoofdnaamonderdeel van myname.

path root_name() const;

Opmerkingen

Het onderdeel is mogelijk leeg.

path::root_path

Retourneert het hoofdpadonderdeel van myname.

path root_path() const;

Opmerkingen

Retourneert het hoofdpadonderdeel vanmyname, met name / root_name()root_directory . Het onderdeel is mogelijk leeg.

path::stem

Retourneert het stem onderdeel van myname.

path stem() const;

Opmerkingen

Retourneert het stem onderdeel van myname, met name filename().native() bij alle gevolgde extension().native() onderdelen die zijn verwijderd. Het onderdeel is mogelijk leeg.

path::string

Converteert de reeks die is opgeslagen in 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;

Opmerkingen

Met de eerste lidfunctie (sjabloon) wordt de volgorde geconverteerd die op myname dezelfde manier is opgeslagen als:

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

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

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

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

De tweede lidfunctie converteert de reeks die is opgeslagen in myname de codering die wordt aanbevolen door het hostsysteem voor een char reeks en retourneert deze die is opgeslagen in een object van het type string.

path::string_type

Het type is een synoniem voor basic_string<value_type>.

typedef basic_string<value_type> string_type;

path::swap

swap(myname, right.myname)Wordt uitgevoerd.

void swap(path& right) noexcept;

path::u16string

Converteert de reeks die is opgeslagen in myname UTF-16 en retourneert deze opgeslagen in een object van het type u16string.

u16string u16string() const;

path::u32string

Converteert de reeks die is opgeslagen in myname UTF-32 en retourneert deze die is opgeslagen in een object van het type u32string.

u32string u32string() const;

path::u8string

Converteert de reeks die is opgeslagen in myname UTF-8 en retourneert deze opgeslagen in een object van het type u8string.

string u8string() const;

path::value_type

Het type beschrijft de path elementen die door het hostbesturingssysteem worden aanbevolen.

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

path::wstring

Converteert de reeks die is opgeslagen in myname de codering die wordt aanbevolen door het hostsysteem voor een wchar_t reeks en retourneert deze die is opgeslagen in een object van het type wstring.

wstring wstring() const;

Zie ook

<filesystem>
headerbestanden