<?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[Eingabe besser überprüfen ?]]></title><description><![CDATA[<p>Hi,<br />
ich programmier nun seid ca. einem Jahr und nun auch seid 3Wochen mit C++ (vorher Delphi).<br />
Ich hab nun ein paar kleinere Projekte (aber schon größer als &quot;Hallo Welt!&quot; etc.) fertig. Dabie viel mir auf, dass der Benutzer auf der Konsole ja eine Menge fehleingaben machen kann- nun denn die Prozedur zum Überprüfen dieser war schnell geschreiben und alles geht wieder. Nun wollt ich diese Prozedur zu einem eigenen header/Klasse zusammenfassen und wollt dazu noch 2 Sachen fragen:<br />
1. Muss ich beim schreiben eines headers/Klasse etwas besonders beachten?<br />
2. Kann man eigentlich die Eingabe in der Konsole von vornherin auf eine bestimmte Anzahl begrenzen, sprich schon während der User etwas eingibt die Länge des Strings überprüfen oder das ganze auf bestimmte Zeichen untersuchen, die Wohlmöglich nicht eingegebn werden sollten?<br />
Im Moment programmier ich auf Windows, also kann der/die Befehle dazu ersteinmal DOS spzezifisch sein, jedoch wollt ich auch eine gute kompatiblität zu Linux herstellen (man will es ja von gleich an richtig lernen :D)</p>
<p>So, das wars erstma, übrigens schöne TUT-Sammlung, hat mir echt weiter geholfen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Pille</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/173469/eingabe-besser-überprüfen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 18 Sep 2026 07:43:43 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/173469.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 16 Feb 2007 10:53:46 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Eingabe besser überprüfen ? on Fri, 16 Feb 2007 10:53:46 GMT]]></title><description><![CDATA[<p>Hi,<br />
ich programmier nun seid ca. einem Jahr und nun auch seid 3Wochen mit C++ (vorher Delphi).<br />
Ich hab nun ein paar kleinere Projekte (aber schon größer als &quot;Hallo Welt!&quot; etc.) fertig. Dabie viel mir auf, dass der Benutzer auf der Konsole ja eine Menge fehleingaben machen kann- nun denn die Prozedur zum Überprüfen dieser war schnell geschreiben und alles geht wieder. Nun wollt ich diese Prozedur zu einem eigenen header/Klasse zusammenfassen und wollt dazu noch 2 Sachen fragen:<br />
1. Muss ich beim schreiben eines headers/Klasse etwas besonders beachten?<br />
2. Kann man eigentlich die Eingabe in der Konsole von vornherin auf eine bestimmte Anzahl begrenzen, sprich schon während der User etwas eingibt die Länge des Strings überprüfen oder das ganze auf bestimmte Zeichen untersuchen, die Wohlmöglich nicht eingegebn werden sollten?<br />
Im Moment programmier ich auf Windows, also kann der/die Befehle dazu ersteinmal DOS spzezifisch sein, jedoch wollt ich auch eine gute kompatiblität zu Linux herstellen (man will es ja von gleich an richtig lernen :D)</p>
<p>So, das wars erstma, übrigens schöne TUT-Sammlung, hat mir echt weiter geholfen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Pille</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1229471</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1229471</guid><dc:creator><![CDATA[Pille456]]></dc:creator><pubDate>Fri, 16 Feb 2007 10:53:46 GMT</pubDate></item><item><title><![CDATA[Reply to Eingabe besser überprüfen ? on Fri, 16 Feb 2007 11:08:28 GMT]]></title><description><![CDATA[<p>Pille456 schrieb:</p>
<blockquote>
<p>1. Muss ich beim schreiben eines headers/Klasse etwas besonders beachten?</p>
</blockquote>
<p>Ja, vor allem die ODR (One Definition Rule = ein Objekt darf (mit Ausnahmen) im Programm nur einmal <em>definiert</em> werden).</p>
<blockquote>
<p>2. Kann man eigentlich die Eingabe in der Konsole von vornherin auf eine bestimmte Anzahl begrenzen, sprich schon während der User etwas eingibt die Länge des Strings überprüfen oder das ganze auf bestimmte Zeichen untersuchen, die Wohlmöglich nicht eingegebn werden sollten?</p>
</blockquote>
<p>Ja, du kannst einem Eingabestream eine Längenangabe mitgeben:</p>
<pre><code class="language-cpp">cin&gt;&gt;setw(20)&gt;&gt;text;//liest maximal 20 Zeichen (afaik)
cin.getline(text,20);
</code></pre>
<p>(oder du verwendest cin.get(), um den String zeichenweise einzugeben und zusammenzubauen (wenn du gemerkt hast, daß du zu weit bist, hilft unget())</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1229475</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1229475</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 16 Feb 2007 11:08:28 GMT</pubDate></item><item><title><![CDATA[Reply to Eingabe besser überprüfen ? on Fri, 16 Feb 2007 11:16:10 GMT]]></title><description><![CDATA[<p>hmm okay... nur wo finde ich die Funktion setw?<br />
Ich hab &lt;iostream.h&gt; eingebunden, dort findet DevC++ die Funktion nicht, dasselbe passiert auch wenn &lt;iostream&gt; einbinde (laut DevC++ eine aktuellere Version von iostream.h, wobei mir die alte besser gefällt :D)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1229479</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1229479</guid><dc:creator><![CDATA[Pille456]]></dc:creator><pubDate>Fri, 16 Feb 2007 11:16:10 GMT</pubDate></item><item><title><![CDATA[Reply to Eingabe besser überprüfen ? on Fri, 16 Feb 2007 11:20:13 GMT]]></title><description><![CDATA[<p>Pille456 schrieb:</p>
<blockquote>
<p>hmm okay... nur wo finde ich die Funktion setw?</p>
</blockquote>
<p>Im Header &lt;iomanip&gt;</p>
<blockquote>
<p>Ich hab &lt;iostream.h&gt; eingebunden, dort findet DevC++ die Funktion nicht, dasselbe passiert auch wenn &lt;iostream&gt; einbinde (laut DevC++ eine aktuellere Version von iostream.h, wobei mir die alte besser gefällt :D)</p>
</blockquote>
<p>Da solltest du schnell umdenken - &lt;iostream.h&gt; ist kein Standard-Header und damit nur bedingt mit der STL kompatibel. (und abgesehen vom Namensraum &quot;std::&quot; sollten eigentlich keine Umstellungen nötig sein)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1229481</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1229481</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 16 Feb 2007 11:20:13 GMT</pubDate></item><item><title><![CDATA[Reply to Eingabe besser überprüfen ? on Fri, 16 Feb 2007 11:29:12 GMT]]></title><description><![CDATA[<p>So, okay funtzt nun alles.<br />
Aber ein paar Fragen hätt ich noch <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /><br />
Wenn ich die Eingabe mit setw() begrentze, dann kann ich im Programm immer noch einen Bufferoverflow durchführen oder? (nur halt keine falschen Werte an das Programm übergeben)<br />
Kann man den Einlesen-Stream nicht einfach auf eine bestimmte Menge begrentzen, sprich der User kann gar nicht mehr als z.B. 10Zeichen eingeben?</p>
<p>Ist es schlimm, wenn ich &lt;iostream.h&gt; verwende? Weil ein Großteil der hier vorhandenne Literatur nutzt diese und ich finde die Namenskennung mit std :: vollkommen unsinnig und bescheuert, das ist mehr Tipparbeit und Frödert nicht gerade die Leserlichkeit...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1229484</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1229484</guid><dc:creator><![CDATA[Pille456]]></dc:creator><pubDate>Fri, 16 Feb 2007 11:29:12 GMT</pubDate></item><item><title><![CDATA[Reply to Eingabe besser überprüfen ? on Fri, 16 Feb 2007 11:56:05 GMT]]></title><description><![CDATA[<p>Pille456 schrieb:</p>
<blockquote>
<p>Wenn ich die Eingabe mit setw() begrentze, dann kann ich im Programm immer noch einen Bufferoverflow durchführen oder? (nur halt keine falschen Werte an das Programm übergeben)</p>
</blockquote>
<p>Nein, mit setw() legst du fest, daß die Eingabe nach spätestens x Zeichen abgebrochen wird (wenn er mehr eingibt, bleibt der Rest im Eingabepuffer stehen, bis du weiterliest oder ihn per igonre() verwirfst.</p>
<p>Aber eleganter ist es wohl, anstelle von char-Arrays einen std::string zu verwenden - der sorgt schon von sich aus dafür, daß er nicht überläuft (außer in dem extrem unwahrscheinlichen Fall, daß der Anwender ca. 64000 Zeichen ohne Punkt und Komma eintippt).</p>
<blockquote>
<p>Ist es schlimm, wenn ich &lt;iostream.h&gt; verwende? Weil ein Großteil der hier vorhandenne Literatur nutzt diese und ich finde die Namenskennung mit std :: vollkommen unsinnig und bescheuert, das ist mehr Tipparbeit und Frödert nicht gerade die Leserlichkeit...</p>
</blockquote>
<p>Ja, die Bibliothek &lt;iostream.h&gt; ist veraltet und gehört nicht zum ANSI-Standard (der Header existiert nur noch aus Kompatiblitätsgründen). Und wenn dich das ständige std:: nervt, setz einfach ein <code>using namespace std;</code> an den Anfang deines Programms (btw, andere Teile der Standard-Bibliothek (string, vector,...) liegen auch alle im Namensraum std).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1229493</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1229493</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 16 Feb 2007 11:56:05 GMT</pubDate></item><item><title><![CDATA[Reply to Eingabe besser überprüfen ? on Fri, 16 Feb 2007 11:59:32 GMT]]></title><description><![CDATA[<p>hmm, aso ok<br />
DANKE</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1229495</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1229495</guid><dc:creator><![CDATA[Pille456]]></dc:creator><pubDate>Fri, 16 Feb 2007 11:59:32 GMT</pubDate></item><item><title><![CDATA[Reply to Eingabe besser überprüfen ? on Fri, 16 Feb 2007 12:09:48 GMT]]></title><description><![CDATA[<p>Allerdings sollte man sich gar nicht erst angewöhnen <em>using namespace std;</em> zu verwenden, da dies oft zu Schwierigkeiten und Mehrdeutigkeiten führt.<br />
Vor allem die Klasse string gibt es in anderen Projekten wie Sand am Meer.<br />
Ein std:: macht den Code nicht unleserlicher, sondern verbessert sogar das Verständnis dafür, wo die verwendete Klasse herkommt.</p>
<p>Verge</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1229504</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1229504</guid><dc:creator><![CDATA[xivVerge]]></dc:creator><pubDate>Fri, 16 Feb 2007 12:09:48 GMT</pubDate></item><item><title><![CDATA[Reply to Eingabe besser überprüfen ? on Fri, 16 Feb 2007 13:37:31 GMT]]></title><description><![CDATA[<p>Und using namespace untergräbt meist den Sinn von namespaces ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1229562</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1229562</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Fri, 16 Feb 2007 13:37:31 GMT</pubDate></item></channel></rss>