std::experimental::filesystem:: u8path
|
Défini dans l'en-tête
<experimental/filesystem>
|
||
|
template
<
class
Source
>
path u8path ( const Source & source ) ; |
(1) | (filesystem TS) |
|
template
<
class
InputIt
>
path u8path ( InputIt first, InputIt last ) ; |
(2) | (filesystem TS) |
Construit un chemin
p
à partir d'une séquence encodée en UTF-8 de
char
s, fournie soit sous forme de
std::string
, soit sous forme de chaîne multioctet terminée par un caractère nul, soit sous forme de 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 multioctets ou mono-octet non-Unicode).
Table des matières |
Paramètres
| source | - | un std::string encodé en UTF-8, un pointeur vers une chaîne de caractères multioctets 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 de caractères multioctets 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 d'
LegacyInputIterator
.
|
||
-
InputIt
doit être
char
.
|
||
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 filesystem_error en cas d'erreurs de l'API système sous-jacente ou 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 <clocale> #include <cstdio> #include <experimental/filesystem> #include <fstream> #include <iostream> namespace fs = std::experimental::filesystem; int main() { std::setlocale(LC_ALL, "en_US.utf8"); std::locale::global(std::locale("en_US.utf8")); fs::path p = fs::u8path(u8"要らない.txt"); // la représentation native de la chaîne peut être utilisée avec les API du système d'exploitation std::ofstream(p) << "File contents"; // ceci utilise operator string() if (std::FILE* f = std::fopen(p.c_str(), "r")) { int ch; while ((ch=fgetc(f))!= EOF) putchar(ch); std::fclose(f); } // les représentations multi-octets et larges peuvent être utilisées pour la sortie std::cout.imbue(std::locale()); std::cout << "\nNom du fichier en encodage multi-octets étroit : " << p.string() << '\n'; std::wcerr.imbue(std::locale()); std::wcerr << "Nom du fichier en encodage large : " << p.wstring() << '\n'; fs::remove(p); }
Sortie possible :
File contents Nom du fichier en encodage multi-octets étroit : 要らない.txt Nom du fichier en encodage large : 要らない.txt
Voir aussi
|
représente un chemin
(classe) |