<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[stringstream führt zu Crash]]></title><description><![CDATA[<p>Jetzt mal was ganz merkwürdiges...</p>
<p>Ich habe eine Methode, die quasi aus großen switch-Statement besteht. Sobald ich in einem der case-Blöcke einen ostringsteam instanziere, stürzt die ganze Methode ab, egal ob ich jetzt wirklich in diesem case-Block war oder nicht. Klartext:</p>
<pre><code class="language-cpp">void Klasse::Methode() {
	switch (type) {
		case 1: {
            // [...]
        break; }
	    case 3: {
			ostringstream buffer;
			// Zeugs mit dem buffer
	    break; }
	    case 4: {
            // [usw...]
	    break; }
	}
}
</code></pre>
<p>Ob ich jetzt mit type = 3 oder mit irgendwas anderem da reingehe, ist egal. Absturz in jedem Fall.</p>
<p>EDIT: Was mich natürlich auch brennend interessiert: Warum stürzt das überhaupt ab? Da kann man doch eigentlich gar nichts falsch machen!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/204402/stringstream-führt-zu-crash</link><generator>RSS for Node</generator><lastBuildDate>Thu, 08 Oct 2026 16:27:32 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/204402.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 02 Feb 2008 20:15:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to stringstream führt zu Crash on Sat, 02 Feb 2008 20:52:09 GMT]]></title><description><![CDATA[<p>Jetzt mal was ganz merkwürdiges...</p>
<p>Ich habe eine Methode, die quasi aus großen switch-Statement besteht. Sobald ich in einem der case-Blöcke einen ostringsteam instanziere, stürzt die ganze Methode ab, egal ob ich jetzt wirklich in diesem case-Block war oder nicht. Klartext:</p>
<pre><code class="language-cpp">void Klasse::Methode() {
	switch (type) {
		case 1: {
            // [...]
        break; }
	    case 3: {
			ostringstream buffer;
			// Zeugs mit dem buffer
	    break; }
	    case 4: {
            // [usw...]
	    break; }
	}
}
</code></pre>
<p>Ob ich jetzt mit type = 3 oder mit irgendwas anderem da reingehe, ist egal. Absturz in jedem Fall.</p>
<p>EDIT: Was mich natürlich auch brennend interessiert: Warum stürzt das überhaupt ab? Da kann man doch eigentlich gar nichts falsch machen!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1448214</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1448214</guid><dc:creator><![CDATA[David Schneider]]></dc:creator><pubDate>Sat, 02 Feb 2008 20:52:09 GMT</pubDate></item><item><title><![CDATA[Reply to stringstream führt zu Crash on Sun, 03 Feb 2008 00:26:24 GMT]]></title><description><![CDATA[<p>du hast fvorher schon einen Bug drin und hier zeigt er sich <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1448315</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1448315</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Sun, 03 Feb 2008 00:26:24 GMT</pubDate></item><item><title><![CDATA[Reply to stringstream führt zu Crash on Sun, 03 Feb 2008 02:33:13 GMT]]></title><description><![CDATA[<p>Es ist anscheinend das Problem gewesen, dass ich vermutete. Aus irgendeinem Grund war bei mir wohl die STL korrumpiert. Ich habe jetzt das SP1 für Visual Studio installiert, den selben Code neu kompliliert, und alles funktioniert.</p>
<p>Hätte mich auch sehr gewundert, wenn allein der Aufruf dieses Konstruktors irgendwie durch äußere Umstände so verändert worden wäre, dass er zum Crash führt.</p>
<p>EDIT: Scheiße. Also kann ja sein, dass ich um die Uhrzeit schon Ausfallerscheinungen habe, aber ich meine trotzdem, dass das gerade eben einmal funktioniert hätte. Und jetzt ist es wieder so wie vorher! Was soll das?</p>
<p>UPDATE: Kann es sein, dass das ganze irgendwie mit der MFC kollidert? Ich habe mal völlig wahllos auch an andere Stellen des Programms solche ostringstreams eingebaut. Grundsätzlich kann ich sagen, dass der Aufruf in Programmteilen, die irgendwie MFC-Klassen verwalten, nicht funktioniert, aber durchaus in jenen, die nur ergänzende Dateiverwaltungsklassen enthalten. Besonders interessant fand ich dabei folgendes:</p>
<pre><code class="language-cpp">void CEntityList::OnDestroy() {
        // hier stürzt ein Aufruf ab
	CListCtrl::OnDestroy();
        // hier nicht
}
</code></pre>
<p>Im ersten Fall existiert das von der Klasse verwaltete Fenster ja noch, im zweiten Fall wurde es bereits zerstört.</p>
<p>Ich erkenne da jetzt nicht irgendwelche Hintergründe, die zu einer Lösung führen würden, aber zumindest ist es ein gewisses Muster. Kann da vielleicht jemand was zu sagen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1448329</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1448329</guid><dc:creator><![CDATA[David Schneider]]></dc:creator><pubDate>Sun, 03 Feb 2008 02:33:13 GMT</pubDate></item><item><title><![CDATA[Reply to stringstream führt zu Crash on Sun, 03 Feb 2008 06:04:55 GMT]]></title><description><![CDATA[<p>Such mal den Fehler bei dir. Die Chance, dass ein Lib nicht geht und du der erste bist dem das auffällt, ist extrem gering.</p>
<p>Wahrscheinlich zerschiest du irgendwas im Speicher. Nimm mal nen Debugger und versuch ein bisschen logisch vorzugehen und bau nicht nur irgendwo wirr deinen Code um.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1448342</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1448342</guid><dc:creator><![CDATA[kuchenmitfisch]]></dc:creator><pubDate>Sun, 03 Feb 2008 06:04:55 GMT</pubDate></item><item><title><![CDATA[Reply to stringstream führt zu Crash on Sun, 03 Feb 2008 15:43:34 GMT]]></title><description><![CDATA[<p>Nichts würde ich lieber tun als den Debugger zu benutzen. Aber ich schreibe hier ein Plugin für 3ds Max 9, und wenn ich das mit laufendem Debugger ausführe, dann weigert sich 3ds Max, weil ein Debugger läuft, weiterzumachen. Folglich kann ich den nicht einsetzen.</p>
<p>Im übrigen sagte ich nicht, dass die Lib grundsätzlich nicht geht, sondern dass sie nur bei mir möglicherweise irgendwie kaputt sein könnte.</p>
<p>Habe es jetzt auch irgendwie zum Laufen bekommen, indem ich ein völlig unverwandtes Problem woanders gelöst habe... Aber wie es halt so ist: Neues Problem:</p>
<p>Ich habe einen String von der Art &quot;*float*, *float*, *float*&quot;, den ich in ein Array aus drei floats eintragen möchte. Dazu mache ich folgendes:</p>
<pre><code class="language-cpp">int end;
for (int i = 0; i &lt; 3; i++) {
	end = value.find(',');
	buffer.str(value.substr(0, end));
	buffer &gt;&gt; theFloats[i];
	value.erase(0, end + 2);
}
</code></pre>
<p>Hierbei wird aber nur die erste Zahl richtig ausgelesen. Bei den anderen beiden scheint operator &gt;&gt; von buffer einfach nichts zu tun. Bei den ostringstreams habe ich irgendwo, irgendwann mal gelesen, dass der Aufruf von str() dazu führt, dass der Inhalt eingefroren wird, also nichts mehr weiter rein geht. Gilt das denn auch für istringstream? Und wenn ja, wie schafft man es dann, den Inhalt auszutauschen, damit man so ein Objekt überhaupt mehrmals benutzen kann? Das sollte doch möglich sein, oder nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1448549</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1448549</guid><dc:creator><![CDATA[David Schneider]]></dc:creator><pubDate>Sun, 03 Feb 2008 15:43:34 GMT</pubDate></item><item><title><![CDATA[Reply to stringstream führt zu Crash on Sun, 03 Feb 2008 15:53:03 GMT]]></title><description><![CDATA[<p>David Schneider schrieb:</p>
<blockquote>
<p>...Im übrigen sagte ich nicht, dass die Lib grundsätzlich nicht geht, sondern dass sie nur bei mir möglicherweise irgendwie kaputt sein könnte...</p>
</blockquote>
<p>Dann wäre es wahrscheinlicher das sie in keister Weise läuft. Schreib ein Miniprogram mit stringstream, wenn das läuft, liegt es mit nahezu 100%iger Sicherheit an deinem Programm. Der Absturz an der Stelle heißt auch nicht das der Fehler unbedingt dort liegt, ich tippe eher darauf das du dir - wobei auch immer - den Stack im Vorfeld mehr oder weniger zerschossen hast (Verwendung nichtinitialisierter Zeiger...).</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1448554</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1448554</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Sun, 03 Feb 2008 15:53:03 GMT</pubDate></item><item><title><![CDATA[Reply to stringstream führt zu Crash on Sun, 03 Feb 2008 16:06:14 GMT]]></title><description><![CDATA[<p>Selbstverständlich würde sie dann in keinster Weise laufen. Nur hatte ich das ja nicht probiert und kann auch keine Aussage darüber machen. Aber es scheitn sich ja bestätigt zu haben, dass eine heap corruption an anderer Stelle den Fehler verursachte. Nachdem ich die behoben hatte (drei Objekte in ein Array der Länge eins), und es nhun geht, vermute ich mal einen Zusammenhang.</p>
<p>Aber das ist ja auch gar nicht mehr mein Problem. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Okay, okay, klassischer Fall von &quot;zu früh gepostet&quot;: Ein Aufruf von buffer.clear() bringt die ganze Sache zum funzen. Wüsste jetzt allerdings nicht, was ich da für error flags produziert haben könnte, die beim zweiten Mal eine ordentliche Ausführung verhindern könnten. Aber solange es jetzt geht, soll mir das ja egal sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1448558</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1448558</guid><dc:creator><![CDATA[David Schneider]]></dc:creator><pubDate>Sun, 03 Feb 2008 16:06:14 GMT</pubDate></item><item><title><![CDATA[Reply to stringstream führt zu Crash on Mon, 04 Feb 2008 21:31:47 GMT]]></title><description><![CDATA[<p>Mal eine Frage zu ungefähr dem selben Thema:</p>
<p>Im Moment bastle ich mir meine ostringstreams zusammen, und will die dann alle der Reihe nach in einen ofstream füttern, um in eine Datei zu schreiben. Was ich da im Moment mache, um vernünftige Ergebnisse zu bekommen, ist:</p>
<pre><code class="language-cpp">ostringstream buffer;
// buffer wird irgendwie gefüllt...

ofstream file;
file &lt;&lt; buffer.str();
</code></pre>
<p>Geht natürlich einwandfrei, sieht aber unnötig umständlich aus. Die Frage wäre aber, ob das nicht irgendwie auch direkt funktioniert? Die beiden Streams sind doch von der selben Klasse (ostream) abgeleitet, da müssten die doch irgendwie auch direkt aneinanderhängbar sein. Leider scheint dabei aber nur die Adresse des buffers geschrieben zu werden, statt des Inhaltes. Muss ich also zwangsweise über den String gehen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1449368</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1449368</guid><dc:creator><![CDATA[David Schneider]]></dc:creator><pubDate>Mon, 04 Feb 2008 21:31:47 GMT</pubDate></item><item><title><![CDATA[Reply to stringstream führt zu Crash on Mon, 04 Feb 2008 21:34:51 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">ostringstream buffer;

ofstream file;
file &lt;&lt; buffer.rdbuf();
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1449369</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1449369</guid><dc:creator><![CDATA[darthdespotism]]></dc:creator><pubDate>Mon, 04 Feb 2008 21:34:51 GMT</pubDate></item><item><title><![CDATA[Reply to stringstream führt zu Crash on Mon, 04 Feb 2008 21:41:44 GMT]]></title><description><![CDATA[<p>Geht das schneller? Ich nehm's mal an.</p>
<p>EDIT: Nö, es geht gar nicht. Eingebaut, ausprobiert. Aber alles ab dem einen nach oben vorgeschlagener Art veränderten Aufruf kommt nicht mehr in die Datei.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1449372</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1449372</guid><dc:creator><![CDATA[David Schneider]]></dc:creator><pubDate>Mon, 04 Feb 2008 21:41:44 GMT</pubDate></item><item><title><![CDATA[Reply to stringstream führt zu Crash on Mon, 04 Feb 2008 21:44:07 GMT]]></title><description><![CDATA[<p>David Schneider schrieb:</p>
<blockquote>
<p>Wüsste jetzt allerdings nicht, was ich da für error flags produziert haben könnte, die beim zweiten Mal eine ordentliche Ausführung verhindern könnten. Aber solange es jetzt geht, soll mir das ja egal sein.</p>
</blockquote>
<p>der stream wurde bis zum ende gelesen, und damit &quot;eof&quot; gesetzt.</p>
<p>es gibt allerdings auch eine einfachere lösung:</p>
<pre><code class="language-cpp">istringstream buffer(&quot;3.142, 1.414, 2.718&quot;);

for (int i = 0; i &lt; 3; i++)
{
   buffer &gt;&gt; theFloats[i];
   buffer.get(); //schlucke ','
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1449375</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1449375</guid><dc:creator><![CDATA[queer_boy]]></dc:creator><pubDate>Mon, 04 Feb 2008 21:44:07 GMT</pubDate></item><item><title><![CDATA[Reply to stringstream führt zu Crash on Mon, 04 Feb 2008 21:45:28 GMT]]></title><description><![CDATA[<p>David Schneider schrieb:</p>
<blockquote>
<p>Geht das schneller? Ich nehm's mal an.</p>
</blockquote>
<p>den streampuffer (stream.rdbuf()) zu übergeben ist die schnellste möglichkeit, die es gibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1449376</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1449376</guid><dc:creator><![CDATA[queer_boy]]></dc:creator><pubDate>Mon, 04 Feb 2008 21:45:28 GMT</pubDate></item><item><title><![CDATA[Reply to stringstream führt zu Crash on Mon, 04 Feb 2008 21:48:06 GMT]]></title><description><![CDATA[<p>Ah, stimmt, so geht's natürlich aus. Hatte gar nicht an die Methoden à la get gedacht, die ja jeder Stream hat.</p>
<p>Was das andere betrifft, siehe meinen Edit weiter oben. Scheint nicht zu gehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1449380</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1449380</guid><dc:creator><![CDATA[David Schneider]]></dc:creator><pubDate>Mon, 04 Feb 2008 21:48:06 GMT</pubDate></item><item><title><![CDATA[Reply to stringstream führt zu Crash on Mon, 04 Feb 2008 22:07:41 GMT]]></title><description><![CDATA[<p>für das &quot;scheint nicht zu gehen&quot; bräuchte ich wohl meine glaskugel, die ist aber gerade in der reinigung.</p>
<p>was geht nicht? ist die datei geöffnet? noch etwas im stringstream drin? ...?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1449392</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1449392</guid><dc:creator><![CDATA[queer_boy]]></dc:creator><pubDate>Mon, 04 Feb 2008 22:07:41 GMT</pubDate></item><item><title><![CDATA[Reply to stringstream führt zu Crash on Mon, 04 Feb 2008 22:18:44 GMT]]></title><description><![CDATA[<p>Ich beschrieb das Problem oben ausführlich. Es wird nichts in die Datei geschrieben, und zwar ab dem ersten Aufruf von operator &lt;&lt;, der einen streambuf bekommt, selbst wenn die Aufrufe danach wieder mit strings arbeiten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1449396</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1449396</guid><dc:creator><![CDATA[David Schneider]]></dc:creator><pubDate>Mon, 04 Feb 2008 22:18:44 GMT</pubDate></item><item><title><![CDATA[Reply to stringstream führt zu Crash on Mon, 04 Feb 2008 22:24:21 GMT]]></title><description><![CDATA[<p>ach sorry, mein fehler: habe übersehen, dass in dem beispiel ein ostringstream vorkommt (war noch ganz bei istringstream).</p>
<p>mach doch einfach einen stringstream daraus, dann wird es funktionieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1449399</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1449399</guid><dc:creator><![CDATA[queer_boy]]></dc:creator><pubDate>Mon, 04 Feb 2008 22:24:21 GMT</pubDate></item><item><title><![CDATA[Reply to stringstream führt zu Crash on Tue, 05 Feb 2008 00:27:10 GMT]]></title><description><![CDATA[<p>Das stimmt in der Tat. Gibt's einen Grund dafür, dass das nur mit stringstream geht? Und allgemein: Lohnt es sich denn dann bei solchen &quot;Aussetzern&quot; überhaupt, die spezialisierten Klassen istringstream und ostringstream zu benutzen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1449433</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1449433</guid><dc:creator><![CDATA[David Schneider]]></dc:creator><pubDate>Tue, 05 Feb 2008 00:27:10 GMT</pubDate></item></channel></rss>