2008-10-22 21 views
17

Ich benutze einen istream, der stringstream, ifstream oder ein benutzerdefinierter stream type sein kann und ich muss wissen, ob es im Falle eines ifstreams nicht im binären Modus geöffnet wurde (damit ich eine Exception werfen kann) . Ich habe die folgende Methode versucht:Gibt es eine Möglichkeit zu überprüfen, ob ein istream im Binärmodus geöffnet wurde?

if ((_is.flags() & ios::binary) == 0) 
    throw exception(...) 

aber keine Ausnahme wird jemals geworfen. Der Test schlägt in diesem Fall fehl, da _is.flags() 0x201 zurückgibt und Ios :: binary 0x20 ist. Gibt es eine Möglichkeit herauszufinden, ob ein Stream im Textmodus geöffnet wurde?

Antwort

11

flags() gibt ios_base::fmtflags zurück, das Flags formatiert, während binary ein ios_base::openmode-Flag ist. Ich bin nicht sicher, ob es einen Weg gibt, diese herauszufinden, sobald der Stream bereits geöffnet ist. Ich dachte, dass es vielleicht ein virtuelles Mitglied der streambuf-Klasse gibt, das helfen könnte, aber es scheint wirklich nicht zu sein.

+0

Ich hatte Angst, dass das der Fall war. – Ferruccio

4

Nein, es gibt keine Möglichkeit, dies zu testen.

Verwandte Themen