Namespaces
Variants

std::basic_filebuf<CharT,Traits>:: open

From cppreference.net
basic_filebuf * open ( const char * s, std:: ios_base :: openmode mode ) ;
(1)
basic_filebuf * open ( const std:: string & str, std:: ios_base :: openmode mode ) ;
(2) (desde C++11)
basic_filebuf * open ( const std:: filesystem :: path & p,
std:: ios_base :: openmode mode ) ;
(3) (desde C++17)
basic_filebuf * open ( const std :: filesystem :: path :: value_type * s,
std:: ios_base :: openmode mode ) ;
(4) (desde C++17)

Si el archivo asociado ya estaba abierto ( is_open ( ) ! = false ), retorna un puntero nulo inmediatamente.

De lo contrario, abre el archivo con el nombre dado ( s , p. c_str ( ) (desde C++17) o str. c_str ( ) , dependiendo de la sobrecarga). Los valores std::ios_base::openmode pueden escribirse como, por ejemplo, std:: ios_base :: out | std:: ios_base :: app .

La sobrecarga (4) solo se proporciona si std::filesystem::path::value_type no es char .

(desde C++17)

El archivo se abre como si se llamara a std::fopen con el segundo argumento (modo de acceso al archivo) determinado por el resultado de mode & ~ std:: ios_base :: ate como sigue, open() falla si el resultado no es alguna combinación de banderas mostradas en la tabla:

mode & ~ std:: ios_base :: ate  std::fopen 
modo de
acceso
Acción si el archivo ya existe Acción si el archivo no existe
binary in out trunc app noreplace
(desde C++23)
- + - - - - "r" Leer desde el inicio Error al abrir
+ + - - - - "rb"
- + + - - - "r+" Error
+ + + - - - "r+b"
- - + - - - "w" Destruir contenidos Crear nuevo
- - + + - -
+ - + - - - "wb"
+ - + + - -
- + + + - - "w+"
+ + + + - - "w+b"
- - + - - + "wx" Error al abrir Crear nuevo
- - + + - +
+ - + - - + "wbx"
+ - + + - +
- + + + - + "w+x"
+ + + + - + "w+bx"
- - + - + - "a" Escribir al final Crear nuevo
- - - - + -
+ - + - + - "ab"
+ - - - + -
- + + - + - "a+"
- + - - + -
+ + + - + - "a+b"
+ + - - + -

Si la operación de apertura tiene éxito y ( openmode & std:: ios_base :: ate ) ! = 0 (el bit ate está activado), reposiciona la posición del archivo al final del mismo, como si se llamara a std:: fseek ( file, 0 , SEEK_END ) , donde file es el puntero devuelto al llamar a std::fopen . Si el reposicionamiento falla, llama a close() y devuelve un puntero nulo para indicar el fallo.

Contenidos

Parámetros

s, str, p - el nombre del archivo a abrir; s debe apuntar a una cadena terminada en nulo
openmode - el modo de apertura del archivo, un OR binario de los modos std::ios_base::openmode

Valor de retorno

this en caso de éxito, un puntero nulo en caso de fallo.

Notas

open() normalmente se llama a través del constructor o la función miembro open() de std::basic_fstream .

Ejemplo

#include <fstream>
#include <iostream>
int main()
{
    std::string filename = "Test.b";
    std::filebuf fb;
    // preparar un archivo para lectura
    double d = 3.14;
    if (!fb.open(filename, std::ios::binary | std::ios::out))
    {
        std::cout << "La apertura del archivo " << filename << " para escritura falló\n";
        return 1;
    } 
    fb.sputn(reinterpret_cast<char*>(&d), sizeof d);
    fb.close();
    // abrir archivo para lectura
    double d2 = 0.0;
    if (!fb.open(filename, std::ios::binary | std::ios::in))
    {
        std::cout << "La apertura del archivo " << filename << " para lectura falló\n";
        return 1;
    }
    auto got = fb.sgetn(reinterpret_cast<char*>(&d2), sizeof d2);
    if (sizeof(d2) != got)
        std::cout << "La lectura de " << filename << " falló\n";
    else
        std::cout << "Lectura recuperada del archivo: " << d2 << '\n';
}

Salida:

Lectura recuperada del archivo: 3.14

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 596 C++98 open() no podía abrir archivos en modo append puede abrir en modo append

Véase también

verifica si el archivo asociado está abierto
(función miembro pública)
vacía el búfer del área de escritura y cierra el archivo asociado
(función miembro pública)