Namespaces
Variants

std::filesystem::path:: string, std::filesystem::path:: wstring, std::filesystem::path:: u8string, std::filesystem::path:: u16string, std::filesystem::path:: u32string

From cppreference.net
template < class CharT, class Traits = std:: char_traits < CharT > ,

class Alloc = std:: allocator < CharT > >
std:: basic_string < CharT,Traits,Alloc >

string ( const Alloc & a = Alloc ( ) ) const ;
(1) (depuis C++17)
(2) (depuis C++17)
std:: string string ( ) const ;
std:: wstring wstring ( ) const ;
std:: u16string u16string ( ) const ;
std:: u32string u32string ( ) const ;
(3)
std:: string u8string ( ) const ;
(depuis C++17)
(jusqu'à C++20)
std:: u8string u8string ( ) const ;
(depuis C++20)

Retourne le chemin interne au format natif de chemin, converti en un type de chaîne spécifique. La conversion, si elle a lieu, est effectuée comme suit :

  • Si path::value_type est char , la conversion, si elle existe, dépend du système. C'est le cas sur les systèmes POSIX typiques (tels que Linux), où l'encodage natif est UTF-8 et string() n'effectue aucune conversion.
  • Sinon, si path::value_type est wchar_t , la conversion, si elle existe, n'est pas spécifiée. C'est le cas sur Windows, où wchar_t est 16 bits et l'encodage natif est UTF-16.
  • Sinon, si path::value_type est char16_t , l'encodage natif est UTF-16 et la méthode de conversion n'est pas spécifiée.
  • Sinon, si path::value_type est char32_t , l'encodage natif est UTF-32 et la méthode de conversion n'est pas spécifiée.
  • Sinon, si path::value_type est char8_t , l'encodage natif est UTF-8 et la méthode de conversion n'est pas spécifiée.
1) Toutes les allocations de mémoire sont effectuées par a .
3) L'encodage du résultat dans le cas de u8string ( ) est toujours UTF-8.

Table des matières

Paramètres

(aucun)

Valeur de retour

Le chemin interne au format natif de chemin, converti en type de chaîne spécifié.

Exceptions

Peut lever des exceptions définies par l'implémentation.

Exemple

#include <clocale>
#include <cstdio>
#include <filesystem>
#include <fstream>
#include <iostream>
#include <locale>
int main()
{
    const char* const localeName = "ja_JP.utf-8";
    std::setlocale(LC_ALL, localeName);
    std::locale::global(std::locale(localeName));
    const std::filesystem::path p(u8"要らない.txt");
    std::ofstream(p) << "File contents";
    // la représentation native de chaîne peut être utilisée avec les API du système d'exploitation
    if (std::FILE* const f = std::fopen(p.string().c_str(), "r"))
    {
        for (int ch; (ch = std::fgetc(f)) != EOF;)
            std::putchar(ch);
        std::fclose(f);
    }
    // les représentations multioctets et larges peuvent être utilisées pour la sortie
    std::cout << "\nNom du fichier en encodage multioctet étroit : " << p.string() << '\n';
    // wstring() lèvera une exception dans stdlibc++ (selon gcc-12.1.0), voir :
    // https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95048
    // https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102839
    // fonctionne avec gcc-12.2.1 plus récent (2023/02/01) et clang-10+
    std::wcout << "Nom du fichier en encodage large : " << p.wstring() << '\n';
    std::filesystem::remove(p);
}

Sortie possible :

File contents
Nom du fichier en encodage multioctet étroit : 要らない.txt
Nom du fichier en encodage large : 要らない.txt

Voir aussi

retourne le chemin au format générique de nom de chemin converti en chaîne
(fonction membre publique)