Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

C++

Dynamische StrStreams

Testen Sie unsere 2015 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Da die Größe des Buffers, den Sie benötigen, nicht immer von Anfang an klar ist, haben Sie die Möglichkeit, mit dynamischen StrStreams zu arbeiten.

Transkript

Vorher hatten wir einen festen Buffer vergeben für die String-Streams, das kann man aber auch dynamisch machen. Hier erst einmal habe ich eine kleine Routine geschrieben infoausgeben. Mit der kann ich mir die Fehlermeldung ausgebung, wenn X nicht gut ist in unser Ausgabestream, dann geben wir einfach hier die msg, die als Parameter übergeben wird aus und sonst "stream ok". Das brauchen wir jetzt häufiger, weil wir da ein bisschen spielen wollen. Hier hab ich einmal ein char *ptr, den brauchen wir nachher für die Ausgabe. Und hier unseren ostrstream. Nun schreiben wir in gewohnter Weise erstmal hier die Daten rein. Das besondere ist, dass man eben kein Buffer übergibt als Parameter, sondern eher den Speicher dynamisch aufbaut. Jetzt kann man sich hier auch anschuen wieviel schon belegt ist. Und die "info" mal ausgeben bis jetzt passirt ja noch nichts wirklich. Aber interessant jetzt, die Möglichkeit Hier an den Buffer ranzukommen, weil ich habe ja nicht einen Buffer wie vorher. Da ist keine Speicherplatz direkt zugänglich und ich muss mir also hier ein Pointer holen und das macht man mit out1.rdbuf()-str(). Da komme ich nähmich an den String pointer ran, der aktuell verwendet wird. Den kann ich mir jetzt auch ausgeben. Es gibt da eine kleine Besonderheit, sobald man darauf zugreif, wied er gefreezed, eingefroren wie man sagt, man kann nicht erneut rausschreiben, ohne ihn wieder freizugeben. Wir probieren das trotzdem mal, Es kommt nämlich dann hier zu einer Fehlermeldung: "write nach freeze" können uns anschuen und die Fehlermeldung muss ich hier natürlich löschen, damit wir weiter machen können, dann gebe ich mal das ganze wieder aus, um zu sehen, ob der Fehler weg ist. Und das ist jetzt eigentlich das wichtige. mit out1.freeze(false) schalte ich das freeze wieder weg, also ich mache ein Unfreeze, das können wir uns wieder anschauen. Jetzt kann ich auch wieder den Seek pointer, den Put pointer neu positionieren ans Ende der Datei und dort einfach weitere Daten anhängen Nun ist es ja eine String-Datei, kann man sagen, nicht physikalisch auf der Festplatte, sondern im Hauptspeicher, weitere Zeichen dran und wieder ein bischen Ausgaben dazwieschen. Und dann geben wir anschließend hier den Pointer wieder aus mit out1.str(), so kann ich auch direkt drauf zugreifen, das geht auch, kann ich hier den ausgeben, die Anzahl der Zeichnen die da drin stehen und am schluss sollte man nicht vergessen mit freeze(false) den Pointer wieder freizugeben, den Speicher freizugeben. Der Pointer ist dann aber nicht mehr valide, das ist wichtig. Deshalb dieses ganze freeze,weil der sonst eben irgendwo im Hauptspeicher steht. Starten wir das ganze mal. So da haben wir jetzt jede Menege, 33 Bytes belegt, schreiben war okay, da kommen die Daten, jetzt kommt hier der write-Fehler nach freeze. Freeze haben wir jetzt hier gelöscht, weil Sie den Fehler gelöscht und dann unfreeze gemacht, dann kann ich wieder Daten schreiben und wir hängen jetzt hier unsere weiteren Zeilen an und wie man schon in der Ausgabe sehen kann, 323 Bytes sind dann am Schluss belegt von dem String-Stream.

C++

Machen Sie sich mit den einfachen Grundlagen zu C++ vertraut und lernen Sie anhand zahlreicher Übungs- und Codebeispiele die Klassenkonzepte, Prozeduren und Funktionen kennen.

9 Std. 3 min (143 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Video-Training auf DVD mit Bonusmagazin

+ Tutorial to go: Mit Videos für iPod, iPhone & Co.

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!