<?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[cin.getline() initialisiert array neu]]></title><description><![CDATA[<p>Hab mal ne Frage zu folgendem Code, ich kann mehr als 19 Zeichen in &quot;zeile&quot; schreiben, heist das das cin.getline() die übergebene Variable neu deklariert?</p>
<p>IDE = Code::Blocks</p>
<pre><code>#include &lt;iostream&gt;
using namespace std;

int main() {

    char zeile[10];

    cout &lt;&lt; &quot;Insert string, end with ENTER...&quot; &lt;&lt; endl;

    // Einlesen
    //cin &gt;&gt; zeile;
    cin.getline(zeile,100);

    // Ausgeben
    cout &lt;&lt; endl &lt;&lt; zeile &lt;&lt; endl;

    system(&quot;pause&quot;);
    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/224333/cin-getline-initialisiert-array-neu</link><generator>RSS for Node</generator><lastBuildDate>Fri, 02 Oct 2026 16:01:39 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/224333.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 08 Oct 2008 12:31:31 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to cin.getline() initialisiert array neu on Wed, 08 Oct 2008 12:31:31 GMT]]></title><description><![CDATA[<p>Hab mal ne Frage zu folgendem Code, ich kann mehr als 19 Zeichen in &quot;zeile&quot; schreiben, heist das das cin.getline() die übergebene Variable neu deklariert?</p>
<p>IDE = Code::Blocks</p>
<pre><code>#include &lt;iostream&gt;
using namespace std;

int main() {

    char zeile[10];

    cout &lt;&lt; &quot;Insert string, end with ENTER...&quot; &lt;&lt; endl;

    // Einlesen
    //cin &gt;&gt; zeile;
    cin.getline(zeile,100);

    // Ausgeben
    cout &lt;&lt; endl &lt;&lt; zeile &lt;&lt; endl;

    system(&quot;pause&quot;);
    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1595511</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1595511</guid><dc:creator><![CDATA[Gast345]]></dc:creator><pubDate>Wed, 08 Oct 2008 12:31:31 GMT</pubDate></item><item><title><![CDATA[Reply to cin.getline() initialisiert array neu on Wed, 08 Oct 2008 12:33:39 GMT]]></title><description><![CDATA[<p>Nein, dass heisst, dass Du Speicher überschreibst, der Dir nicht gehört.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1595513</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1595513</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Wed, 08 Oct 2008 12:33:39 GMT</pubDate></item><item><title><![CDATA[Reply to cin.getline() initialisiert array neu on Wed, 08 Oct 2008 14:07:02 GMT]]></title><description><![CDATA[<pre><code>char zeile[10];
  ...
  cin.getline(zeile,100);
</code></pre>
<p>Um solche Fehler zu vermeiden, nimmt man für die maximale Zeilenlänge eine Konstante und benutzt die dann statt der numerischen Werte oder wählt gleich die Variante für std::string:</p>
<pre><code>string s;
  getline(cin, s);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1595573</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1595573</guid><dc:creator><![CDATA[jencas]]></dc:creator><pubDate>Wed, 08 Oct 2008 14:07:02 GMT</pubDate></item><item><title><![CDATA[Reply to cin.getline() initialisiert array neu on Wed, 08 Oct 2008 14:27:57 GMT]]></title><description><![CDATA[<p>jencas schrieb:</p>
<blockquote>
<pre><code>char zeile[10];
  ...
  cin.getline(zeile,100);
</code></pre>
<p>Um solche Fehler zu vermeiden, nimmt man für die maximale Zeilenlänge eine Konstante und benutzt die dann statt der numerischen Werte oder wählt gleich die Variante für std::string:</p>
<pre><code>string s;
  getline(cin, s);
</code></pre>
</blockquote>
<p>Ich glaube, ihm ist schon klar, dass er da mehr reinschreibt, als er eigentlich sollte. Er wundert sich (Glaskugel) vermutlich nur, wieso das so &quot;anstandslos&quot; funktioniert.<br />
In C++ gibt es für klassische Arrays keine Längenprüfung. Wenn Du auf Elemente eines Arrays zugreifst die es nicht gibt, bekommst Du vom Compiler keine Fehlermeldung.<br />
Das Verhalten Deines Programms ist dann aber undefiniert. Undefiniert heisst, es kann alles mögliche passieren...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1595591</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1595591</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Wed, 08 Oct 2008 14:27:57 GMT</pubDate></item><item><title><![CDATA[Reply to cin.getline() initialisiert array neu on Thu, 09 Oct 2008 07:07:09 GMT]]></title><description><![CDATA[<p>Tachyon: danke, das wollte ich wissen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1596007</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1596007</guid><dc:creator><![CDATA[Gast345]]></dc:creator><pubDate>Thu, 09 Oct 2008 07:07:09 GMT</pubDate></item><item><title><![CDATA[Reply to cin.getline() initialisiert array neu on Thu, 09 Oct 2008 08:33:34 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<p>Undefiniert heisst, es kann alles mögliche passieren...</p>
</blockquote>
<p>Oft gesehen ist z.B. ein segmentation fault/violation. Das Programm schmiert dir dann ab, nachdem es eine entprechende Fehlermeldung in den Äther geschrien hat.<br />
Ein anderes Problem hatte ich neulich: das Programm hat sich sang- und klanglos verabschiedet. Allerdings nur wenn man nicht im Debug-Modus kompiliert hat, denn im Debugmodus liefs ohne Probleme (!)<br />
Die Funktion in der der Fehler passiert ist wurde (ohne Debugmodus) einwandfrei bis zum Ende ausgeführt (letzter Befehl war ein cout-statement), allerdings wurde der nächste Befehl nach der Funktion (auch ein cout statement) nie erreicht. Mit den Erkenntnissen hatte ein Kollege mir den Schlamassel übergeben.<br />
Ergebnis: die Funktion wimmelte vor char-Arrays, printf()'s und all dem grausigen Geraffel ohne irgendwelche Längenchecks. An einer Stelle ging das dann auch schief, im Release-Modus wurde die Rücksprungadresse überschrieben, im Debug-Modus hats nur die Debuginformationen erwischt, deswegen liefs dort.</p>
<p>Moral: Wenn nur irgendwie möglich FINGER WEG von char-Arrays und allem anderen was nicht über Längenchecks etc. verfügt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1596075</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1596075</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Thu, 09 Oct 2008 08:33:34 GMT</pubDate></item><item><title><![CDATA[Reply to cin.getline() initialisiert array neu on Thu, 09 Oct 2008 08:50:43 GMT]]></title><description><![CDATA[<p>Es sei denn, man weiß was man tut. Wenn man das sauber durchzieht und darauf achtet dass die Längen immer eingehalten werden, dann geht das auch.</p>
<p>Hab gerade letztens einen Server komplett in Ansi-C entwickelt... es geht wirklich wenn man aufpasst <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/1596086</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1596086</guid><dc:creator><![CDATA[It0101]]></dc:creator><pubDate>Thu, 09 Oct 2008 08:50:43 GMT</pubDate></item><item><title><![CDATA[Reply to cin.getline() initialisiert array neu on Thu, 09 Oct 2008 08:58:41 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>Tachyon schrieb:</p>
<blockquote>
<p>Undefiniert heisst, es kann alles mögliche passieren...</p>
</blockquote>
<p>Oft gesehen ist z.B. ein segmentation fault/violation. Das Programm schmiert dir dann ab, nachdem es eine entprechende Fehlermeldung in den Äther geschrien hat.<br />
Ein anderes Problem hatte ich neulich: das Programm hat sich sang- und klanglos verabschiedet. Allerdings nur wenn man nicht im Debug-Modus kompiliert hat, denn im Debugmodus liefs ohne Probleme (!)<br />
Die Funktion in der der Fehler passiert ist wurde (ohne Debugmodus) einwandfrei bis zum Ende ausgeführt (letzter Befehl war ein cout-statement), allerdings wurde der nächste Befehl nach der Funktion (auch ein cout statement) nie erreicht. Mit den Erkenntnissen hatte ein Kollege mir den Schlamassel übergeben.<br />
Ergebnis: die Funktion wimmelte vor char-Arrays, printf()'s und all dem grausigen Geraffel ohne irgendwelche Längenchecks. An einer Stelle ging das dann auch schief, im Release-Modus wurde die Rücksprungadresse überschrieben, im Debug-Modus hats nur die Debuginformationen erwischt, deswegen liefs dort.</p>
<p>Moral: Wenn nur irgendwie möglich FINGER WEG von char-Arrays und allem anderen was nicht über Längenchecks etc. verfügt.</p>
</blockquote>
<p><code>std::cin.getline</code> HAT aber einen Längencheck. Nur sollte man da auch die richtige Länge einsetzen.<br />
So könnte man auch argumentietren, dass man keine Iteratoren benutzen soll. Die haben auch keinen Längencheck.<br />
Aber die Moral Deiner Aussage ist natürlich richtig: lieber <code>std::getline</code> und <code>std::string</code> benutzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1596091</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1596091</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Thu, 09 Oct 2008 08:58:41 GMT</pubDate></item></channel></rss>