Domanda

Sto usando un istream che potrebbe essere stringstream, ifstream o un tipo di flusso definito dall'utente e devo sapere se, nel caso di un ifstream, non è stato aperto in modalità binaria (quindi posso lanciare un'eccezione ). Ho provato il seguente metodo:

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

ma non viene mai generata alcuna eccezione. Il test fallisce in questo caso perché _is.flags () restituisce 0x201 e ios :: binary è 0x20. C'è un modo per scoprire se uno stream è stato aperto in modalità testo?

È stato utile?

Soluzione

flags () restituisce ios_base :: fmtflags che sta formattando i flag , mentre binary è una ios_base :: openmode . Non sono sicuro se c'è un modo per scoprirli una volta che lo stream è già aperto. Stavo pensando che forse c'era un membro virtuale della classe streambuf che poteva aiutare, ma non sembra proprio esserci.

Altri suggerimenti

No, non c'è modo di testarlo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top