Namespaces
Variants

std::experimental::filesystem::path:: c_str, std::experimental::filesystem::path:: native, std::experimental::filesystem::path:: operator string_type()

From cppreference.net
const value_type * c_str ( ) const ;
(1) (filesystem TS)
const string_type & native ( ) const ;
(2) (filesystem TS)
operator string_type ( ) const ;
(3) (filesystem TS)

Accède au nom de chemin natif sous forme de chaîne de caractères.

1) Équivalent à native ( ) . c_str ( ) .
2) Retourne la représentation native de la chaîne du chemin d'accès par référence.
3) Retourne la représentation native de la chaîne du chemin d'accès par valeur.

Table des matières

Paramètres

(aucun)

Valeur de retour

La représentation native de la chaîne du chemin d'accès, utilisant la syntaxe native, le type de caractère natif et l'encodage de caractères natif. Cette chaîne est adaptée à une utilisation avec les API du système d'exploitation.

Exceptions

1,2)
noexcept spécification :
noexcept

Notes

La fonction de conversion (3) est fournie afin que les API standard d'ouverture de fichiers qui acceptent std::basic_string comme noms de fichiers, telles que le constructeur std::ifstream , puissent utiliser les chemins d'accès sans aucune modification du code :

fs::path p = "/tmp/text.txt";
std::ifstream f(p);

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

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