Das folgende Code-Beispiel stammt aus dem Buch
Objektorientiertes Programmieren in C++
- Ein Tutorial für Ein- und Umsteiger
von Nicolai Josuttis, Addison-Wesley München, 2001
© Copyright Nicolai Josuttis 2001
// **** BEGINN Namespace Bsp ********************************
namespace Bsp {
void String::scanFrom (std::istream& strm)
{
char c;
len = 0; // zunächst ist der gelesene String leer
strm >> std::ws; // führende Trennzeichen überlesen
/* solange der Input-Stream strm nach dem Einlesen
* eines Zeichens in c in Ordnung ist
*/
while (strm.get(c)) { // >> würde Trennzeichen überlesen
/* ein Trennzeichen schließt die Stringeingabe ab
* => RETURN
*/
if (std::isspace(c)) {
return;
}
/* falls der Platz nicht mehr ausreicht,
* muss mehr geschaffen werden
*/
if (len >= size) {
char* tmp = buffer; // Zeiger auf alten Speicherplatz
size = size*2 + 32; // Speicherplatz mehr als verdoppeln
buffer = new char[size]; // neuen Speicherplatz anlegen
std::memcpy(buffer,tmp,len); // Zeichen kopieren
delete [] tmp; // alten Speicherplatz freigeben
}
// neues Zeichen eintragen
buffer[len] = c;
++len;
}
// Einlese-Ende durch Fehler oder EOF
}
} // **** ENDE Namespace Bsp ********************************