basic_streambuf::overflow
Una funzione virtuale protetta che possa essere chiamato quando un nuovo carattere viene inserito in un buffer completo.
virtual int_type overflow(
int_type _Meta = traits_type::eof( )
);
Parametri
- _Meta
Il carattere da inserire nel buffer, o traits_type::EOF.
Valore restituito
Se la funzione potrebbe non riuscire, restituisce traits_type::eof o genera un'eccezione. In caso contrario, restituisce traits_type::not_eof(_Meta). Il comportamento predefinito prevede di restituire traits_type::eof.
Note
Se _Meta non si confronta uguale a traits_type::eof, la funzione membro virtuale protetta tenta di inserire l'elemento traits_type::to_char_type(_Meta) nel flusso di output. È possibile farlo in diversi modi:
Se write position è disponibile, è possibile memorizzare l'elemento nella posizione di scrittura e incrementare il puntatore seguente per il buffer di output.
Può rendere disponibile un percorso di scrittura allocando la nuova o archiviazione aggiuntiva per il buffer di output.
Può rendere disponibile un percorso di scrittura scrivendo, di una determinata destinazione esterna, alcuni o tutti gli elementi tra i puntatori iniziali e seguenti per il buffer di output.
La funzione virtuale di overflow, insieme alle funzioni di underflow e di sincronizzazione, che definisce le caratteristiche della classe streambuf- derivata. Ogni classe derivata potrebbe implementare l'overflow in modo diverso, mentre l'interfaccia con la classe chiamante del flusso è identica.
La funzione di overflow il più delle volte viene chiamata da funzioni pubbliche di streambuf come sputc e sputn quando l'area inserita è completa, mentre altre classi, incluse le classi di flusso, possono chiamare in qualsiasi momento overflow.
La funzione utilizza i caratteri nell'area inserita tra pbase e di pptr quindi reinizializza l'area inserita. La funzione di overflow deve utilizzare nCh (se nCh non è EOF, oppure può scegliere di inserire il carattere della nuova area inserita in modo che venga utilizzata la chiamata successiva.
La definizione di utilizzare varia tra le classi derivate. Ad esempio, la classe di filebuf scrive i relativi caratteri in un file, mentre la classe di strstreambuf li gestisce nel buffer e se il buffer è definito come dinamico) espandere il buffer in risposta a una chiamata per superare. Questa espansione viene raggiunta liberando il buffer obsoleto e sostituirlo con new, più grande. I puntatori vengono modificati secondo necessità.
Requisiti
streambuf <diIntestazione: >
Spazio dei nomi: std