Hallo erstmal.
Was macht die Methode str(char*) der Klasse istringstream eigentlich genau? Ich habe nämlich den Eindruck, dass Sie den char-Zeiger nicht tief, sondern nur flach kopiert.
Ich habe das Problem, dass ich aus einer Datei Daten in einen istringstream einlesen muss. Das hatte ich folgendermaßen gelöst:
void fill(istringstream& istr);
{
ifstream file;
char* puffer;
file.open(…);
file.seekg(…);
puffer = new char[size];
file.read(puffer, size);
puffer[size] = ‚\0‘;
istr.str(puffer);
delete[] puffer;
return;
}
Bei dieser Lösung hatte ich bei mehrmaliger Ausführung dieser Routine (eigentlich eine Methode einer Klasse) auf demselben istringstream Programmabstürze, in denen ich kein Muster finden konnte.
Ich bin dann dazu übergegangen, den puffer als Elementvariable der Klasse zu deklarieren, und seinen Speicherbereich offenzuhalten, bis die Methode neu aufgerufen wird:
{
istr.str("");
istr.clear(); // istringstream löschen, und Flags neu setzen.
if (puffer)
delete[] puffer;
// Rest wie oben
}
Seitdem scheint die Methode sauber zu arbeiten. Aber ich bin mir nicht sicher, ob das so bleiben wird.
Vielen Dank im Voraus,
Bernhard.