Namespaces
Variants

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

From cppreference.net

(1)
void open ( const std :: filesystem :: path :: value_type * filename,

std:: ios_base :: openmode mode

= std:: ios_base :: in | std:: ios_base :: out ) ;
(2) (depuis C++17)
(3) (depuis C++11)
(4) (depuis C++17)

Ouvre et associe le fichier portant le nom filename avec le flux de fichier.

Appelle clear ( ) en cas de succès. Appelle setstate ( failbit ) en cas d'échec.

1,2) Appelle effectivement rdbuf ( ) - > open ( filename, mode ) (voir std::basic_filebuf::open pour les détails sur les effets de cet appel). La surcharge (2) n'est fournie que si std::filesystem::path::value_type n'est pas char . (depuis C++17)
3,4) Appelle effectivement (1,2) comme si par open ( filename. c_str ( ) , mode ) .

Table des matières

Paramètres

filename - le nom du fichier à ouvrir
mode - spécifie le mode d'ouverture du flux. C'est un BitmaskType , les constantes suivantes sont définies :
Constante Explication
app se positionner à la fin du flux avant chaque écriture
binary ouvrir en mode binaire
in ouvrir en lecture
out ouvrir en écriture
trunc vider le contenu du flux à l'ouverture
ate se positionner à la fin du flux immédiatement après l'ouverture
noreplace (C++23) ouvrir en mode exclusif

Exemple

#include <fstream>
#include <iostream>
#include <string>
int main()
{
    std::string filename = "example.123";
    std::fstream fs;
    fs.open(filename);
    if (!fs.is_open())
    {
        fs.clear();
        fs.open(filename, std::ios::out); // create file
        fs.close();
        fs.open(filename);
    }
    std::cout << std::boolalpha;
    std::cout << "fs.is_open() = " << fs.is_open() << '\n';
    std::cout << "fs.good() = " << fs.good() << '\n';
}

Rapports de défauts

Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.

DR Appliqué à Comportement tel que publié Comportement corrigé
LWG 22 C++98 il n'était pas clair comment l'état d'erreur change lors d'une ouverture réussie l'état d'erreur reste inchangé
LWG 409 C++98 l'état d'erreur restait inchangé lors d'une ouverture réussie il est effacé [1]
LWG 460 C++98 l'argument par défaut de mode dans la surcharge (1)
était manquant (il est présent dans la synopsis )
ajouté
  1. La résolution du problème LWG #22 est remplacée.

Voir aussi

vérifie si le flux a un fichier associé
(fonction membre publique)
ferme le fichier associé
(fonction membre publique)
ouvre un fichier et le configure comme séquence de caractères associée
(fonction membre publique de std::basic_filebuf<CharT,Traits> )