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)

Accede al nombre de ruta nativo como una cadena de caracteres.

1) Equivalente a native ( ) . c_str ( ) .
2) Devuelve la representación de cadena nativa de la ruta por referencia.
3) Devuelve la representación de cadena nativa del nombre de ruta por valor.

Contenidos

Parámetros

(ninguno)

Valor de retorno

La representación nativa de cadena de la ruta, utilizando sintaxis nativa, tipo de carácter nativo y codificación de caracteres nativa. Esta cadena es adecuada para usar con APIs del sistema operativo.

Excepciones

1,2)
noexcept especificación:
noexcept

Notas

La función de conversión (3) se proporciona para que las APIs estándar de apertura de archivos que aceptan std::basic_string nombres de archivo, como el constructor de std::ifstream , puedan utilizar rutas de archivo sin realizar cambios en el código:

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

Ejemplo

#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 representación de cadena nativa puede usarse con APIs del sistema operativo
    std::ofstream(p) << "File contents"; // esto usa operator string()
    if (std::FILE* f = std::fopen(p.c_str(), "r"))
    {
        int ch;
        while ((ch=fgetc(f))!= EOF) putchar(ch);
        std::fclose(f);
    }
    // las representaciones multibyte y wide pueden usarse para salida
    std::cout.imbue(std::locale());
    std::cout << "\nFile name in narrow multibyte encoding: "
              << p.string() << '\n';
    std::wcerr.imbue(std::locale());
    std::wcerr << "File name in wide encoding: "
               << p.wstring() << '\n';
    fs::remove(p);
}

Salida posible:

File contents
File name in narrow multibyte encoding: 要らない.txt
File name in wide encoding: 要らない.txt

Véase también

devuelve la ruta en formato de nombre de ruta nativo convertido a una cadena
(función miembro pública)
devuelve la ruta en formato de nombre de ruta genérico convertido a una cadena
(función miembro pública)