String-Ausgabestreams dienen dem Zweck, eine Ausgabe irgendwelcher Daten zu puffern. Es stehen Konvertierungs-Funktionen oder -Operatoren zur Verfügung. Damit können Daten grundlegender Typen wie char, int, float, double zu Strings konvertiert werden. Mithilfe des vielfach überladenen Ausgabeoperators "<<" können sehr bequem Daten hintereinander im Puffer eines String-Ausgabestreams abgelegt werden.
Wenn dem Stream alle erwünschten Ausgaben zugeführt wurden, kann man einfach auf den gesamten zusammengesetzten String mittels der Stream-Methode str() zugreifen. Diese Elementfunktion liefert ein string-Objekt. string ist eine in der der Standardbibliothek definierte Klasse für Zeichenketten.
Diejenige Klasse, die mit "Zeichen vom Typ char" arbeitet, heißt ostringstream. Sie ist auf der Basis des Templates basic_ostringstream definiert.
typedef basic_ostringstream<char> ostringstream;Wenn Sie sich für weitere Informationen zu ostringstream interessieren, müssen Sie also unter basic_ostringstream suchen.
Die Beschreibungsdatei für String-Ausgabeströme ist <sstream> (von string stream). Wenn Sie string-Objekte verwenden wollen, benötigen Sie auch die string-Beschreibungsdatei <string>. Vergessen Sie nicht den Namensraum std!
Beispiel:
#include <sstream> using namespace std; int main() { ostringstream oss; int a, b; cout << "Geben Sie bitte zwei ganze Zahlen ein!\n"; cin >> a >> b; oss << "Sie haben folgende Zahlen eingegeben:\n" << a << ", " << b; cout << oss.str() << endl; return 0; } |
|
Ausgaben: |
Geben Sie bitte zwei ganze Zahlen ein! 12 34 Sie haben folgende Zahlen eingegeben: 12, 34 |
Sie sehen, dass Sie einem String-Ausgabestream Daten ebenso zuführen können
wie dem Objekt cout. Das beschriebene Verfahren können Sie sehr gut bei Ausgaben
innerhalb einer GUI-Anwendung nutzen. Falls Sie Microsoft Visual C++ 6 verwenden,
müssen Sie wahrscheinlich den proprietären Datentyp CString oder einen
nullterminierten Standard C-String verwenden. Hierzu können Sie die Methode
string::c_str() aufrufen, die einen nullterminierten C-String liefert.
string temp(oss.str()); // temp wird mit dem von oos.str() gelieferten Wert konstruiert. AfxMessageBox(temp.c_str());Das temporäre string-Objekt "temp" wird allerdings nicht benötigt.
AfxMessageBox(oss.str().c_str());