std::filesystem:: u8path
|
Défini dans l'en-tête
<filesystem>
|
||
|
template
<
class
Source
>
std:: filesystem :: path u8path ( const Source & source ) ; |
(1) |
(depuis C++17)
(obsolète en C++20) |
|
template
<
class
InputIt
>
std:: filesystem :: path u8path ( InputIt first, InputIt last ) ; |
(2) |
(depuis C++17)
(obsolète en C++20) |
Construit un chemin
p
à partir d'une séquence encodée en UTF-8 de
char
s
ou de
char8_t
s
(depuis C++20)
, fournie soit sous forme d'un
std::string
, soit sous forme d'un
std::string_view
, soit sous forme d'une chaîne multioctet terminée par un caractère nul, soit sous forme d'une paire d'itérateurs
[
first, last
)
.
-
Si
path::value_typeest char et que l'encodage natif est UTF-8, construit un chemin directement comme par path ( source ) ou path ( first, last ) . Remarque : c'est la situation typique d'un système POSIX utilisant Unicode, tel que Linux. -
Sinon, si
path::value_typeest wchar_t et que l'encodage natif est UTF-16 (c'est le cas sous Windows), ou sipath::value_typeest char16_t (encodage natif garanti UTF-16) ou char32_t (encodage natif garanti UTF-32), alors convertit d'abord la séquence de caractères UTF-8 en une chaîne temporairetmpde typepath::string_typepuis le nouveau chemin est construit comme par path ( tmp ) . -
Sinon (pour les encodages de caractères étroits non UTF-8 et pour
wchar_t
non UTF-16), convertit d'abord la séquence de caractères UTF-8 en une chaîne encodée UTF-32 temporaire
tmpde type std:: u32string , puis le nouveau chemin est construit comme par path ( tmp ) (ce chemin est emprunté sur un système POSIX avec un système de fichiers encodé en multioctet ou mono-octet non Unicode).
Table des matières |
Paramètres
| source | - | une chaîne std::string encodée en UTF-8, std::string_view , un pointeur vers une chaîne multioctet terminée par un caractère nul, ou un itérateur d'entrée avec un type de valeur char qui pointe vers une chaîne multioctet terminée par un caractère nul |
| first, last | - | paire d' LegacyInputIterator s qui spécifient une séquence de caractères encodée en UTF-8 |
| Exigences de type | ||
-
InputIt
doit satisfaire aux exigences de
LegacyInputIterator
.
|
||
-
Source
ou
InputIt
doit être
char
ou
char8_t
.
(depuis C++20)
|
||
Valeur de retour
Le chemin construit à partir de la chaîne d'entrée après conversion de l'UTF-8 vers l'encodage de caractères natif du système de fichiers.
Exceptions
Peut lever std::bad_alloc si l'allocation de mémoire échoue.
Notes
Sur les systèmes où le format de chemin natif diffère du format de chemin générique (ni les systèmes Windows ni les systèmes POSIX ne sont des exemples de tels OS), si l'argument de cette fonction utilise le format générique, il sera converti en natif.
Exemple
#include <cstdio> #ifdef _MSC_VER #include <fcntl.h> #include <io.h> #else #include <clocale> #include <locale> #endif #include <filesystem> #include <fstream> int main() { #ifdef _MSC_VER _setmode(_fileno(stderr), _O_WTEXT); #else std::setlocale(LC_ALL, ""); std::locale::global(std::locale("")); #endif std::filesystem::path p(u8"要らない.txt"); std::ofstream(p) << "File contents"; // Prior to LWG2676 uses operator string_type() // on MSVC, where string_type is wstring, only // works due to non-standard extension. // Post-LWG2676 uses new fstream constructors // Native string representation can be used with OS-specific APIs #ifdef _MSC_VER if (std::FILE* f = _wfopen(p.c_str(), L"r")) #else if (std::FILE* f = std::fopen(p.c_str(), "r")) #endif { for (int ch; (ch = fgetc(f)) != EOF; std::putchar(ch)) {} std::fclose(f); } std::filesystem::remove(p); }
Sortie possible :
File contents
Voir aussi
|
(C++17)
|
représente un chemin
(classe) |