Namespaces
Variants

std::basic_ifstream<CharT,Traits>:: basic_ifstream

From cppreference.net

basic_ifstream ( ) ;
(1)
explicit basic_ifstream ( const char * filename,

std:: ios_base :: openmode mode

= std:: ios_base :: in ) ;
(2)
explicit basic_ifstream ( const std :: filesystem :: path :: value_type * filename,

std:: ios_base :: openmode mode

= std:: ios_base :: in ) ;
(3) (seit C++17)
explicit basic_ifstream ( const std:: string & filename,

std:: ios_base :: openmode mode

= std:: ios_base :: in ) ;
(4) (seit C++11)
template < class FsPath >

explicit basic_ifstream ( const FsPath & filename,
std:: ios_base :: openmode mode

= std:: ios_base :: in ) ;
(5) (seit C++17)
basic_ifstream ( basic_ifstream && other ) ;
(6) (seit C++11)
basic_ifstream ( const basic_ifstream & rhs ) = delete ;
(7) (seit C++11)

Konstruiert neuen Dateistrom.

1) Standardkonstruktor: Konstruiert einen Stream, der keiner Datei zugeordnet ist: standardkonstruiert den std::basic_filebuf und konstruiert die Basis mit dem Zeiger auf diesen standardkonstruierten std::basic_filebuf Member.
2,3) Führt zunächst dieselben Schritte wie der Standardkonstruktor aus und assoziiert dann den Stream mit einer Datei durch Aufruf von rdbuf ( ) - > open ( filename, mode | std:: ios_base :: in ) (siehe std::basic_filebuf::open für Details zu den Auswirkungen dieses Aufrufs). Wenn der open() -Aufruf einen Nullzeiger zurückgibt, wird setstate ( failbit ) gesetzt. Überladung (3) wird nur bereitgestellt, wenn std :: filesystem :: path :: value_type nicht char ist. (seit C++17)
4,5) Gleich wie basic_ifstream ( filename. c_str ( ) , mode ) . (5) nimmt nur dann an der Überladungsauflösung teil, wenn FsPath std::filesystem::path ist. (seit C++17)
6) Move-Konstruktor. Zuerst wird die Basisklasse aus other move-konstruiert (was den rdbuf() -Zeiger nicht beeinflusst), dann wird das std::basic_filebuf -Mitglied move-konstruiert, dann wird this - > set_rdbuf ( ) aufgerufen, um den neuen basic_filebuf als rdbuf() -Zeiger in der Basisklasse zu installieren.
7) Der Kopierkonstruktor ist gelöscht: Diese Klasse ist nicht kopierbar.

Inhaltsverzeichnis

Parameter

filename - der Name der zu öffnenden Datei
mode - gibt den Öffnungsmodus des Streams an. Folgende Konstanten und bitweises ODER zwischen ihnen können verwendet werden:
Konstante Erklärung
app springt vor jedem Schreibvorgang zum Ende des Streams
binary öffnet im Binärmodus
in öffnet zum Lesen
out öffnet zum Schreiben
trunc verwirft den Inhalt des Streams beim Öffnen
ate springt unmittelbar nach dem Öffnen zum Ende des Streams
noreplace (C++23) öffnet im exklusiven Modus
other - ein weiterer Dateistream, der als Quelle verwendet werden soll

Beispiel

#include <fstream>
#include <string>
#include <utility>
int main()
{
    std::ifstream f0;
    std::ifstream f1("test.bin", std::ios::binary);
    std::string name = "example.txt";
    std::ifstream f2(name);
    std::ifstream f3(std::move(f1));
}

Fehlerberichte

Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR Angewendet auf Verhalten wie veröffentlicht Korrektes Verhalten
LWG 3430 C++17 std::filesystem::path Überladung führte zu unerwünschten Konvertierungen Vermieden durch Template-Implementierung

Siehe auch

öffnet eine Datei und verknüpft sie mit dem Stream
(öffentliche Elementfunktion)
öffnet eine Datei und konfiguriert sie als assoziierte Zeichensequenz
(öffentliche Elementfunktion von std::basic_filebuf<CharT,Traits> )
ersetzt den rdbuf ohne dessen Fehlerstatus zu löschen
(geschützte Elementfunktion)
konstruiert das Objekt
(öffentliche Elementfunktion von std::basic_istream<CharT,Traits> )