Benutzerdefinierter Stream-Puffer für die interne Pufferverwaltung
Problem:
In C-I/O-Streams , ist die pubsetbuf()-Methode in bestimmten Implementierungen nicht vollständig implementiert. Dies schränkt die Möglichkeit ein, Stream-Inhalte direkt in einen bestimmten Puffer zu schreiben.
Lösung:
Um diese Einschränkung zu überwinden, erstellen Sie eine benutzerdefinierte Stream-Pufferklasse, die ihre Interna initialisiert zeigen Sie auf das Gewünschte Puffer.
template <typename char_type> struct ostreambuf : public std::basic_streambuf<char_type, std::char_traits<char_type>> { ostreambuf(char_type* buffer, std::streamsize bufferLength) { setp(buffer, buffer + bufferLength); } };
Anwendung:
Verwenden Sie den benutzerdefinierten Stream-Puffer mit I/O-Streams wie folgt:
char buffer[1024]; ostreambuf<char> ostreamBuffer(buffer, sizeof(buffer)); std::ostream messageStream(&ostreamBuffer); messageStream << "Hello" << std::endl; messageStream << "World!" << std::endl;
Diese Lösung ermöglicht Stream-Inhalte werden direkt in den angegebenen Puffer geschrieben, ohne dass der Overhead durch unnötige Datenkopien entsteht.
Das obige ist der detaillierte Inhalt vonWie kann ich in C einen benutzerdefinierten Stream-Puffer für das direkte Pufferschreiben erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!