Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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:
de hoofdnaam, indien aanwezig
de hoofdmap, indien aanwezig
de resterende mapelementen van het bovenliggende
pathitem, indien aanwezig, eindigend met de bestandsnaam, indien aanwezig
Voor pval een object van het type path:
path::iterator X = pval.begin()wijst het eerstepathelement in de padnaam aan, indien aanwezig.X == pval.end()istruewanneerXpunten net voorbij het einde van de reeks onderdelen vallen.*Xretourneert een tekenreeks die overeenkomt met het huidige onderdeel++Xwijst het volgende onderdeel in de reeks aan, indien aanwezig.--Xwijst het voorgaande onderdeel in de volgorde aan, indien aanwezig.mynameAls u wijzigingen wijzigt, worden alle iterators die elementen aanwijzen inmyname.
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:
append(right);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:
string()voorstring<char, Traits, Alloc>()wstring()voorstring<wchar_t, Traits, Alloc>()u16string()voorstring<char16_t, Traits, Alloc>()u32string()voorstring<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