<?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[Frage zu Exceptions]]></title><description><![CDATA[<p>alle tutorials die ich über exceptions gelesen habe definieren irgendwelche eigenen funktionen mit einem throw dran, aber ich hab nichts gefunden über exceptions die zum beispiel auftreten wenn man auf ein nicht mehr existierendes objekt zugreift.<br />
ich will zum beispiel das programm weiterlaufen lassen, auch wenn man auf einen dynamisch erzeugten string zugreift der schon mit delete entfernt wurde, aber es klappt nicht.</p>
<pre><code class="language-cpp">string* str=new string(&quot;asdf&quot;);
	delete str;

	try{
		cout&lt;&lt;*str;
	}
	catch(...)
	{
		cout&lt;&lt;&quot;exception...&quot;&lt;&lt;endl;
	}
</code></pre>
<p>das programm crasht einfach immer.<br />
kann man das irgendwie lösen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/306211/frage-zu-exceptions</link><generator>RSS for Node</generator><lastBuildDate>Sat, 08 Aug 2026 06:29:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/306211.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 21 Jul 2012 09:32:29 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zu Exceptions on Sat, 21 Jul 2012 09:32:29 GMT]]></title><description><![CDATA[<p>alle tutorials die ich über exceptions gelesen habe definieren irgendwelche eigenen funktionen mit einem throw dran, aber ich hab nichts gefunden über exceptions die zum beispiel auftreten wenn man auf ein nicht mehr existierendes objekt zugreift.<br />
ich will zum beispiel das programm weiterlaufen lassen, auch wenn man auf einen dynamisch erzeugten string zugreift der schon mit delete entfernt wurde, aber es klappt nicht.</p>
<pre><code class="language-cpp">string* str=new string(&quot;asdf&quot;);
	delete str;

	try{
		cout&lt;&lt;*str;
	}
	catch(...)
	{
		cout&lt;&lt;&quot;exception...&quot;&lt;&lt;endl;
	}
</code></pre>
<p>das programm crasht einfach immer.<br />
kann man das irgendwie lösen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2234513</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2234513</guid><dc:creator><![CDATA[Francis123]]></dc:creator><pubDate>Sat, 21 Jul 2012 09:32:29 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Exceptions on Sat, 21 Jul 2012 09:45:19 GMT]]></title><description><![CDATA[<p>Ein Segmentation Fault ist ein Fehler, keine Exception. Exceptions sind keine Laufzeitfehler, sondern sie müssen vom Programm aktiv geworfen werden (manche Funktionen der Standardbibliothek schmeißen auch Exceptions).</p>
<pre><code class="language-cpp">string* str=new string(&quot;asdf&quot;);
</code></pre>
<p>Hoffentlich nur ein schnelles Beispiel und nichts, was du auch nur annähernd so oder ähnlich jemals tun würdest, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2234515</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2234515</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 21 Jul 2012 09:45:19 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Exceptions on Sat, 21 Jul 2012 09:55:54 GMT]]></title><description><![CDATA[<p>es ist nur ein schnelles beispiel aber ich will das programm nicht crashen lassen wenn auf ein nicht existierendes objekt zugegriffen wird. geht das nicht irgendwie?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2234518</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2234518</guid><dc:creator><![CDATA[Francis123]]></dc:creator><pubDate>Sat, 21 Jul 2012 09:55:54 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Exceptions on Sat, 21 Jul 2012 10:01:15 GMT]]></title><description><![CDATA[<p>Ne, ist immer UB. Zumindest was den C++ Standard angeht. Aber sollte das Ziel nicht eher sein, solche Zugriffe zu verhindern? Oo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2234520</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2234520</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Sat, 21 Jul 2012 10:01:15 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Exceptions on Sat, 21 Jul 2012 10:02:52 GMT]]></title><description><![CDATA[<p>Du kannst einen Wrapper bauen, wo du deine Zeiger rein tust und dann kannst du 0-Dereferenzierungen abfangen und eine Exception werfen. Der Wrapper könnte theoretisch dann wiederum ein Problem sein, aber wenn du den nicht per new anforderst sollte nie was passieren.</p>
<p>Eine Art solcher Wrapper sind dann die Smart Pointer, welche dir noch weitere Vorteile bringen gegenüber rohen Zeigern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2234522</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2234522</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sat, 21 Jul 2012 10:02:52 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Exceptions on Sat, 21 Jul 2012 10:05:19 GMT]]></title><description><![CDATA[<p>Nikolai schrieb:</p>
<blockquote>
<p>es ist nur ein schnelles beispiel aber ich will das programm nicht crashen lassen wenn auf ein nicht existierendes objekt zugegriffen wird. geht das nicht irgendwie?</p>
</blockquote>
<p>Ja. Indem du so programmierst, dass dieser Fall gar nicht eintreten kann. Das ist nicht schwer. Ein Anfang wäre, dass du keine expliziten new und delete benutzt. Denn wenn du sagst, dass dieser Fall bei dir überhaupt vorkommt, dann kann ich nur folgern, dass du eben dies getan hast und dein Beispiel trotz</p>
<p>Nikolai schrieb:</p>
<blockquote>
<p>es ist nur ein schnelles beispiel</p>
</blockquote>
<p>wohl doch nicht so weit von einem deiner echten Programme entfernt ist.</p>
<p>Das ist an sich nicht schwer, wenn man nur die Grundregeln sauberer Programmierung beachtet. Das sollte in einem (guten!) Anfängerbuch alles ausführlich erklärt werden und steht auch in jedem Stilratgeber zu C++. Wenn du in C++ sauber programmierst, dann <em>kann</em> gar kein Fehler dieser Art mehr auftreten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2234523</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2234523</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 21 Jul 2012 10:05:19 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Exceptions on Sat, 21 Jul 2012 10:15:42 GMT]]></title><description><![CDATA[<p>ich soll keine new und delete benutzen? was wenn ich ein array hab wo hunderte clients gespeichert werden sollen. wie soll das ohne pointer gehen? ist es üblich das new und delete einfach wegzulassen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2234530</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2234530</guid><dc:creator><![CDATA[Francis123]]></dc:creator><pubDate>Sat, 21 Jul 2012 10:15:42 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Exceptions on Sat, 21 Jul 2012 10:33:14 GMT]]></title><description><![CDATA[<p>new, delete, Arrays und Überraschung, dass du sie nicht benutzen sollst? Ich fürchte, du hast nicht C++ gelernt, sondern eine Art C/Java-Mischling. Guck mal die Bücherliste in meiner Signatur an, für vernünftige Lehrbücher. Vergiss den Unsinn den du gelernt hast und nenn uns noch, wo du C++ gelernt hast, als abschreckendes Beispiel. Galileo-Verlag? Jürgen Wolf?</p>
<p>Die Antwort auf dein Problem wäre:<br />
1. Ja, benutze kein new, delete oder Arrays ohne extrem guten Grund.<br />
2. Wenn du meinst, einen extrem guten Grund gefunden zu haben: Er ist nicht gut.<br />
3. Nimm std::vector</p>
<p>Leider wirst du vermutlich mit deinem bisherigen Wissen keine Ahnung haben, was std::vector ist und dir wird sicherlich auch der Hintergrund fehlen, um std::vector auf die Schnelle zu verstehen. Da kann ich dir leider auch nicht helfen, da musst du eben erst richtiges C++ lernen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2234532</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2234532</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 21 Jul 2012 10:33:14 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Exceptions on Sat, 21 Jul 2012 11:48:07 GMT]]></title><description><![CDATA[<p>Könnte auch noch für dich interessant sein:<br />
<a href="http://www.cplusplus.com/reference/std/new/set_new_handler/" rel="nofollow">http://www.cplusplus.com/reference/std/new/set_new_handler/</a></p>
<p>MfG</p>
<p>Edit: Es ist natürlich richtig auf new und delete zu verzichten, wie schon des öftern hier gesagt wurde.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2234536</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2234536</guid><dc:creator><![CDATA[yihaaa]]></dc:creator><pubDate>Sat, 21 Jul 2012 11:48:07 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Exceptions on Sat, 21 Jul 2012 12:22:59 GMT]]></title><description><![CDATA[<p>die arroganz hier ist wohl noch größer als im php forum. in dem thread wo ich nach verbesserungsvorschlägen für meinen voll funktionsfähigen chat server und client gefragt hab, hat aber keiner geantwortet.<br />
da hab ich auch einfach pointer arrays benutzt und solche dinge die man wohl auf keinen fall benutzen sollte obwohl die sprache sie anbietet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2234539</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2234539</guid><dc:creator><![CDATA[Francis123]]></dc:creator><pubDate>Sat, 21 Jul 2012 12:22:59 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Exceptions on Sat, 21 Jul 2012 12:34:44 GMT]]></title><description><![CDATA[<p>Das hat nichts mit Arroganz zu tun, sondern mit der Tatsache, dass du es nicht wahrhaben willst, Unsinn gelernt zu haben. Die Leute hier haben jahrelange Erfahrung und wissen, wovon sie sprechen. Es liegt an dir, deren Hilfe anzunehmen, oder nicht.</p>
<p>Und dein Code zeugt eindeutig von schlechtem bzw. falschen Design.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2234542</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2234542</guid><dc:creator><![CDATA[Kellerautomat]]></dc:creator><pubDate>Sat, 21 Jul 2012 12:34:44 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Exceptions on Sat, 21 Jul 2012 12:50:42 GMT]]></title><description><![CDATA[<p>Naja, irgendwie wird hier schon immer eine gewisse Arroganz zur Schau gestellt - selbst wenn die Leute natürlich recht haben. (Das typische &quot;Wir kennen uns aus, du hast keine Ahnung&quot;)</p>
<p>Dein Problem, Nikolai, ist glaube ich, dass dir vielleicht nicht ganz klar ist warum dein Programm crasht. Das ist nicht ein kleinerer Fehler, das ist ein katastrophaler Fehler bei dem dein Betriebssystem aus Sicherheitsgründen die Reißleine zieht. Es kann dir in so einer Situation auch passieren, dass du auf Speicher zugreifst der dir gehört, dann merkt das Betriebssystem nichts, das Programm crasht nicht, und du überschreibst eventuell für dich wichtige Daten, die dann unwiederbringlich verloren sein können. Deine Fehlerlösungsversuche gehen also am eigentlichen Problem etwas vorbei.</p>
<p>Man kann durchaus riesiege Mengen von Code schreiben, um das selbst irgendwie zu behandeln (bevor das Betriebssystem eingreift). Sinn macht das aber keinen. Die richtige und vernünftige Lösung ist einfach, solche Situationen zu vermeiden. Und das macht man am besten, indem man new/delete vermeidet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2234544</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2234544</guid><dc:creator><![CDATA[KMT]]></dc:creator><pubDate>Sat, 21 Jul 2012 12:50:42 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Exceptions on Sat, 21 Jul 2012 14:13:13 GMT]]></title><description><![CDATA[<p>Nikolai schrieb:</p>
<blockquote>
<p>die arroganz hier ist wohl noch größer als im php forum.</p>
</blockquote>
<p>Na das hoffe ich doch, wir haben allen Grund dazu. MUAHAHAHHAA! .. Ehem..</p>
<p>Nikolai schrieb:</p>
<blockquote>
<p>in dem thread wo ich nach verbesserungsvorschlägen für meinen voll funktionsfähigen chat server und client gefragt hab, hat aber keiner geantwortet.</p>
</blockquote>
<p>Dazu hätte man ja auch nur schreiben können: Guck dir C++ noch mal an. Ich meine, da kann man nicht mehr verbessern, da hilft nur noch neu schreiben. So ist das halt als Anfänger. Aber wenn man sich nicht mal die Mühe macht alles einheitlich einzurücken, braucht man auch auf keine Antwort zu hoffen.</p>
<p>Nikolai schrieb:</p>
<blockquote>
<p>da hab ich auch einfach pointer arrays benutzt und solche dinge</p>
</blockquote>
<p>Ja, der war ja auch totaler Müll!</p>
<p>Nikolai schrieb:</p>
<blockquote>
<p>die man wohl auf keinen fall benutzen sollte obwohl die sprache sie anbietet.</p>
</blockquote>
<p>Die soll man benutzen wenn man 1. muss und 2. weiß was man tut. Da du keine Standardbibliothek nachbauen musst, ist 1. nicht erfüllt. Und 2. na ja, die Antwort kennst du wohl. Wenn du aus Neugier lernen willst, dann bau sowas wie std::vector, std::list etc. nach. Guck dir das Interface und die Anforderungen genau an, und bau es exakt nach. Wenn du dann hier fragst wie die Implementierung ist, bekommst du auch ne Antwort. (Sofern du ordentlich einrückst.)</p>
<p>Aber in einem anderen Kontext macht es keinen Sinn sich mit rohen Zeigern rumzuschlagen, weil die Antwort auf die Frage &quot;Was mache ich denn wenn ich keinen std::vector habe?&quot; &quot;Selber bauen!&quot; lautet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2234555</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2234555</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Sat, 21 Jul 2012 14:13:13 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Exceptions on Sat, 21 Jul 2012 14:20:34 GMT]]></title><description><![CDATA[<p>Nikolai schrieb:</p>
<blockquote>
<p>da hab ich auch einfach pointer arrays benutzt und solche dinge die man wohl auf keinen fall benutzen sollte obwohl die sprache sie anbietet.</p>
</blockquote>
<p>Diese Denkweise ist ausgesprochen gefährlich. Viele Sprachen bieten beispielsweise goto an; trotzdem ist es in den allermeisten Fällen eine sehr schlechte Idee, darauf zurückzugreifen. Eine gute Programmiersprache hält dir nicht bei allem die Hand -- nur, dass man etwas auf eine bestimmte Weise schreiben kann, heißt nicht, dass es eine gute Idee ist, es so zu tun. Man <em>kann</em> Basisklassen ohne virtuellen Destruktor schreiben, aber wenn man weiß, was man tut, lässt man es tunlichst bleiben. Man <em>kann</em> mit dynamic_cast den konkreten Typ hinter einer Basisklassenreferenz heraussuchen, aber wenn man weiß, was man tut, lässt man es tunlichst bleiben (sofern man nicht gerade einen Fünf-Minuten-Fix zusammenschustern muss und das Problem später richtig löst).</p>
<p>Bei Zeigern ist es insofern etwas komplizierter, als dass (auch wenn es in der überwiegenden Mehrzahl der Fälle besser ohne geht) es durchaus eine nicht vernachlässigbare Menge von Umständen gibt, in denen Zeiger eine gute Lösung sind (auch rohe, dann aber natürlich nicht besitzend). Vorsicht ist aber mit Zeigern in jedem Fall geboten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2234559</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2234559</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Sat, 21 Jul 2012 14:20:34 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Exceptions on Sat, 21 Jul 2012 16:53:41 GMT]]></title><description><![CDATA[<p>Nikolai schrieb:</p>
<blockquote>
<p>die arroganz hier ist wohl noch größer als im php forum.</p>
</blockquote>
<p>Damit magst du grundsätzlich Recht haben, aber gerade in diesem Thread sehe ich nicht viel was ich als arrogant bezeichnen würde. (Zumindest nicht vor deinem hier zitierten Beitrag. EDIT: OK, auch danach gibt es eigentlich nur ein wirklich unnötiges Kommentar /EDIT)<br />
Wenn hier also nicht gerade mächtig viel böse Kommentare gelöscht wurden, bist du wohl einfach etwas zu empfindlich.</p>
<blockquote>
<p>in dem thread wo ich nach verbesserungsvorschlägen für meinen voll funktionsfähigen chat server und client gefragt hab, hat aber keiner geantwortet.</p>
</blockquote>
<p>Ich hab' mir den Thread kurz angesehen. Könnte vermutlich daran liegen dass der Code grauenhaft ist, und noch dazu reichlich unübersichtlich eingerückt.<br />
Kaum jemand hat Lust sowas zu lesen, und kaum jemand hat Lust dir 10 oder mehr Stellen aufzuzählen wo du Mist baust.<br />
Noch dazu weil es mit einem einfachen &quot;das ist Mist&quot; ja nicht getan ist - damit es dir hilft müsste man an jeder Stelle genau erklären warum das Mist ist, und vor allem wie man es besser macht. Was u.U. nicht so trivial ist, und alles andere als trivial zu erklären.</p>
<blockquote>
<p>da hab ich auch einfach pointer arrays benutzt und solche dinge die man wohl auf keinen fall benutzen sollte obwohl die sprache sie anbietet.</p>
</blockquote>
<p>Dass keiner geantwortet hat heisst ja nicht dass der Code gut ist.<br />
Der Code ist nicht gut, er ist grauenhaft.</p>
<p>----</p>
<p>Nikolai schrieb:</p>
<blockquote>
<p>es ist nur ein schnelles beispiel aber ich will das programm nicht crashen lassen wenn auf ein nicht existierendes objekt zugegriffen wird. geht das nicht irgendwie?</p>
</blockquote>
<p>Wie schon erwähnt wurde geht das in C++ nicht, und die einzige Lösung ist zu vermeiden dass dein Programm solche Zugriffe macht.</p>
<p>Wenn du eine Sprache willst die mit sowas klarkommt, dann verwende C# oder Java. Da ist dank Garbage-Collection garantiert dass alle Objekte auf die dein Programm überhaupt noch zugreifen <em>kann</em> auch noch da sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2234587</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2234587</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sat, 21 Jul 2012 16:53:41 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Exceptions on Sat, 21 Jul 2012 17:05:03 GMT]]></title><description><![CDATA[<p>mein code ist also grauenhaft, totaler schrott, der letzte müll, obwohl er vollständig funktioniert. wie wärs dann mit ein par beispielen was daran genau schlecht ist, auf jeden fall anders gemacht werden sollte und warum?<br />
einrücken hab ich gemacht, keine ahnung wie man es noch besser machen sollte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2234594</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2234594</guid><dc:creator><![CDATA[Francis123]]></dc:creator><pubDate>Sat, 21 Jul 2012 17:05:03 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Exceptions on Sat, 21 Jul 2012 17:31:57 GMT]]></title><description><![CDATA[<p>Jemand, der mit Code wie</p>
<pre><code class="language-cpp">string* str=new string(&quot;asdf&quot;);
</code></pre>
<p>aufwartet und Einrücken für das entscheidende Kriterium der Codequalität hält, dessen Code kann nur totaler Schrott sein (so sinnvoll Einrückung auch ist).</p>
<p>Das ist aber auch nicht so richtig schlimm -- immerhin bist du ganz offensichtlich Anfänger. Nur solltest du dich nicht auf imaginären Lorbeeren ausruhen, weil du irgendwas zusammengeschustert hat, was für den Moment einigermaßen hält. Bei dem, was ich bisher von dir gesehen habe, gehe ich beispielsweise jede Wette ein, dass dein Code Speicher leckt wie ein Küchensieb.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2234601</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2234601</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Sat, 21 Jul 2012 17:31:57 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Exceptions on Sat, 21 Jul 2012 17:35:19 GMT]]></title><description><![CDATA[<p>Verlink mal bitte deinen anderen Thread, bin zu faul zum suchen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2234603</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2234603</guid><dc:creator><![CDATA[Kellerautomat]]></dc:creator><pubDate>Sat, 21 Jul 2012 17:35:19 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Exceptions on Sat, 21 Jul 2012 17:50:34 GMT]]></title><description><![CDATA[<p>Kellerautomat schrieb:</p>
<blockquote>
<p>Verlink mal bitte deinen anderen Thread, bin zu faul zum suchen.</p>
</blockquote>
<p>Alle Beiträge von Nikolai anzeigen, FTW! Er meinst diesen Thread:<br />
<a href="http://www.c-plusplus.net/forum/305611" rel="nofollow">http://www.c-plusplus.net/forum/305611</a></p>
<p>500 Zeilen Code mit der Aufforderung &quot;Ich habe zwar keine Frage, aber schaut trotzdem mal durch, ihr habt schließlich sonst nix zu tun&quot;. Kein Wunder, dass dort niemand geantwortet hat. Zu den Winapizeugs kann ich nix sagen, außer dass ich mir da einen Wrapper machen würde, anstatt so wild am C-Interface rumzufummeln, der Rest des Codes ist so typischer &quot;C++ von A bis Z&quot;-Stil (das ist kein Kompliment), wenn ich mal raten darf, wer hier der Lehrer war.</p>
<p>P.S.: Oh Gott:</p>
<pre><code class="language-cpp">cin.sync();    cin.clear();//keine ahnung wozu, im buch wurde das immer so gemacht.
</code></pre>
<p>Das macht glaube ich nicht einmal Jürgen Würgen. Hoffe ich.</p>
<p>@Nikolai: Dir will hier niemand was böses. Im Gegenteil, du willst Hilfe, wir wollen helfen. Dazu muss man aber auch sagen können, dass dein Code Mist ist und dass dies daran liegt, dass du Mist gelernt hast (nochmals bestätigt durch dieses grandiose Fundstück aus deinem Buch). Wie sonst solltest du erfahren, dass du umlernen musst, wenn du jemals weiter kommen möchtest?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2234607</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2234607</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 21 Jul 2012 17:50:34 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Exceptions on Sat, 21 Jul 2012 17:47:06 GMT]]></title><description><![CDATA[<p>Nikolai schrieb:</p>
<blockquote>
<p>das programm crasht einfach immer.<br />
kann man das irgendwie lösen?</p>
</blockquote>
<p>Zusätzlich zu dem, was die anderen eh schon geschrieben haben...<br />
Das muss nicht crashen. Das ist undefiniertes Verhalten. Es gibt keinen Fehler &quot;auf ein nicht existierendes Objekt zugreifen&quot;. Es könnte zu einer access violation kommen. Muss es aber überhaupt nicht. Solche Fehler können jahrelang unbemerkt im Code bleiben. Solche Speicherfehler sind ganz übel. Das schlimmste was passieren kann, es wird irgendwo im Programm Speicher überschrieben, was später an einer ganz anderen Stelle zu einem Crash führt (oder einfach dazu, dass sich das Programm falsch verhält, was aber gar nicht auffällt). Nach solchen Fehlern kann man wochenlang suchen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2234608</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2234608</guid><dc:creator><![CDATA[Mechanics]]></dc:creator><pubDate>Sat, 21 Jul 2012 17:47:06 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Exceptions on Sat, 21 Jul 2012 17:59:40 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Kellerautomat schrieb:</p>
<blockquote>
<p>Verlink mal bitte deinen anderen Thread, bin zu faul zum suchen.</p>
</blockquote>
<p>Alle Beiträge von Nikolai anzeigen, FTW! Er meinst diesen Thread:<br />
<a href="http://www.c-plusplus.net/forum/305611" rel="nofollow">http://www.c-plusplus.net/forum/305611</a></p>
<p>500 Zeilen Code mit der Aufforderung &quot;Ich habe zwar keine Frage, aber schaut trotzdem mal durch, ihr habt schließlich sonst nix zu tun&quot;. Kein Wunder, dass dort niemand geantwortet hat. Zu den Winapizeugs kann ich nix sagen, außer dass ich mir da einen Wrapper machen würde, anstatt so wild am C-Interface rumzufummeln, der Rest des Codes ist so typischer &quot;C++ von A bis Z&quot;-Stil (das ist kein Kompliment), wenn ich mal raten darf, wer hier der Lehrer war.</p>
<p>P.S.: Oh Gott:</p>
<pre><code class="language-cpp">cin.sync();    cin.clear();//keine ahnung wozu, im buch wurde das immer so gemacht.
</code></pre>
<p>Das macht glaube ich nicht einmal Jürgen Würgen. Hoffe ich.</p>
<p>@Nikolai: Dir will hier niemand was böses. Im Gegenteil, du willst Hilfe, wir wollen helfen. Dazu muss man aber auch sagen können, dass dein Code Mist ist und dass dies daran liegt, dass du Mist gelernt hast (nochmals bestätigt durch dieses grandiose Fundstück aus deinem Buch). Wie sonst solltest du erfahren, dass du umlernen musst, wenn du jemals weiter kommen möchtest?</p>
</blockquote>
<p>Ich keine Ahnung was cin.sync und clear bewirkt, aber ich konnte herausfinden, um welches Buch es sich handelt:<br />
C++ – Lernen und professionell anwenden</p>
<p>(Hab ich bei Google gefunden und da war gleich das ganze Buch bei Google Books. Ist das überhaupt legal, dass Google Books ein ganzes Buch hat?)</p>
<p>EDIT: War nur eine Leseprobe. Hier der Link zum Buch;<br />
<a href="http://books.google.at/books?id=yNlxgQAaXBcC&amp;pg=PA587&amp;lpg=PA587&amp;dq=cin.sync%28%29;++++cin.clear%28%29;&amp;source=bl&amp;ots=DN9YWrvPFZ&amp;sig=z0q9xN7BbSS3zB58cw3rcz3z4SA&amp;hl=de&amp;sa=X&amp;ei=newKUOacDKPC0QWf1_DeCg&amp;ved=0CIIBEOgBMAg#v=onepage&amp;q=cin.sync%28%29%3B%20%20%20%20cin.clear%28%29%3B&amp;f=false" rel="nofollow">http://books.google.at/books?id=yNlxgQAaXBcC&amp;pg=PA587&amp;lpg=PA587&amp;dq=cin.sync();++++cin.clear();&amp;source=bl&amp;ots=DN9YWrvPFZ&amp;sig=z0q9xN7BbSS3zB58cw3rcz3z4SA&amp;hl=de&amp;sa=X&amp;ei=newKUOacDKPC0QWf1_DeCg&amp;ved=0CIIBEOgBMAg#v=onepage&amp;q=cin.sync()%3B    cin.clear()%3B&amp;f=false</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2234610</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2234610</guid><dc:creator><![CDATA[IrgendeinName]]></dc:creator><pubDate>Sat, 21 Jul 2012 17:59:40 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Exceptions on Sat, 21 Jul 2012 18:06:11 GMT]]></title><description><![CDATA[<p>@TE: Guck mal in deinen Thread. Ich glaub, ich hab dort einen Post verloren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2234612</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2234612</guid><dc:creator><![CDATA[Kellerautomat]]></dc:creator><pubDate>Sat, 21 Jul 2012 18:06:11 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Exceptions on Sat, 21 Jul 2012 18:31:11 GMT]]></title><description><![CDATA[<p>das ist der korrekte buchtitel. der name war wohl nicht programm, die bewertungen bei amazon waren jedenfalls gut, nur danach hab ichs ausgesucht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2234618</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2234618</guid><dc:creator><![CDATA[Francis123]]></dc:creator><pubDate>Sat, 21 Jul 2012 18:31:11 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Exceptions on Sat, 21 Jul 2012 19:35:37 GMT]]></title><description><![CDATA[<p>Bewertungen von Fachbüchern für Anfänger sind nie zuverlässig. Diejenigen, die die Rezension schreiben, haben gerade ihr ganzes Wissen aus diesem Buch bezogen und können dessen Unzulänglichkeiten zwangsläufig nicht einschätzen.</p>
<p>Es gibt wohl einige Implementationen, unter denen std::cin.sync() den Inhalt des Eingabepuffers wegwirft - vom Standard ist das natürlich nicht gedeckt, und was dabei genau passiert, ist mitunter gar nicht so einfach vorherzusagen (etwa, wenn der Eingabestrom umgeleitet wird, Dinge per copy/paste in die Konsole gepumpt werden oder jemand im ungünstigen Moment noch eine Taste drückt). Eine bessere Herangehensweise ist es üblicherweise, den Rest der eingegebenen Zeile zu ignorieren -- so lässt sich der Kram dann auch besser skripten. Das sieht dann beispielsweise so aus:</p>
<pre><code class="language-cpp">std::cin.ignore(1000000, '\n'); // Ignoriere eine Million Zeichen oder bis zum nächsten '\n' (was früher kommt)
</code></pre>
<p>Besser noch ist</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;limits&gt;

...

std::cin.ignore(std::numeric_limits&lt;std::streamsize&gt;::max(), '\n');
</code></pre>
<p>std::numeric_limits<a href="std::streamsize" rel="nofollow">std::streamsize</a>::max() ist der größte Wert, den std::streamsize annehmen kann. Im Standard ist dieser spezielle Aufruf von std::istream::ignore ein Sonderfall, durch den der erste Parameter quasi ignoriert wird (es wird bis zum nächsten Zeilenumbruch ignoriert, unabhängig davon, wie lange das dauert).</p>
<p>Eine andere Herangehensweise ist, ganze Zeilen in einen std::string einzulesen und einen Stringstream zum Parsen heranzuziehen - das ist konzeptionell hübsch sauber, weil der Eingabestrom praktisch nie mit Resten zurückbleibt (ergo exceptionsicher), kann aber, wenn I/O-Performance kritisch ist, langsamer sein.</p>
<p>Was Bücher angeht, so lohnt sich ein <a href="https://www.amazon.de/Einf%C3%BChrung-die-Programmierung-mit-C/dp/3868940057" rel="nofollow">Gang zum Großmeister</a> oder der etwas billigere Gang <a href="http://www.amazon.de/C-Primer-Sonstige-B%C3%BCcher-AW/dp/3827326125/ref=sr_1_5?s=books&amp;ie=UTF8&amp;qid=1342899146&amp;sr=1-5" rel="nofollow">zu auch sehr fähigen Leuten</a>. Letzterer Titel kommt allerdings vorrausichtlich bald in neuerer Auflage heraus und scheint im Moment (zumindest bei Amazon) nur auf Englisch zu kriegen zu sein. Wende dich halt an einen Buchhändler deines Vertrauens.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2234628</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2234628</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Sat, 21 Jul 2012 19:35:37 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Exceptions on Sat, 21 Jul 2012 19:47:34 GMT]]></title><description><![CDATA[<p>seldon schrieb:</p>
<blockquote>
<p>Bewertungen von Fachbüchern für Anfänger sind nie zuverlässig.</p>
</blockquote>
<p>Das ist leider nicht nur bei Fachbüchern so. Wenn ich mir Bewertungen zur Unterhaltungsliteratur anschaue, könnte man auch glatt meinen, das muss das einzige Buch sein, dass die Leute jeweils gelesen haben, sonst kann ich meist keinen Grund erkennen, warum das jemand gut findet. Deswegen lese ich bei Amazon grundsätzlich fast nur die negativen Kritiken.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2234629</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2234629</guid><dc:creator><![CDATA[Mechanics]]></dc:creator><pubDate>Sat, 21 Jul 2012 19:47:34 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Exceptions on Sat, 21 Jul 2012 19:54:02 GMT]]></title><description><![CDATA[<p>Wahrscheinlich gibt es da einen psychologischen Effekt, dass nur diejenigen zurückgehen und sich die Mühe machen, eine Rezension zu schreiben, denen das Buch sehr gut gefallen hat. Und halt die, die dafür bezahlt werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2234631</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2234631</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Sat, 21 Jul 2012 19:54:02 GMT</pubDate></item></channel></rss>