<?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[getline]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe ein Problem mit folgendem Code:</p>
<pre><code>#include &lt;iostream&gt;
using namespace std;

int main ()
{
    char array[40];
    cout &lt;&lt; &quot;Bitte 1. Text eingeben:\n&quot;;
    cin.getline(array, sizeof(array),'.');
    cout &lt;&lt; &quot;1. Eingabe war:\n &quot; &lt;&lt; array &lt;&lt; '\n';
    cin.seekg(0,ios::end);
    cout &lt;&lt; &quot;Bitte 2. Text eingeben:\n&quot; ;
    cin.getline(array, sizeof(array),'.');
    cout &lt;&lt; &quot;2. Eingabe war:\n &quot; &lt;&lt; array &lt;&lt; '\n';
}
</code></pre>
<p>Normalerweise sollte hier eine zweite Eingabeaufforderung durchgeführt werden. Jedoch wird diese übersprungen (scheinbar) und das Programm abgebrochen. Wieso verhält sich obiger Code nicht wie erwartet.<br />
Zum Vergleich die Ausgabe:</p>
<pre><code>Bitte 1. Text eingeben:
abc.def
1. Eingabe war:
 abc
Bitte 2. Text eingeben:
2. Eingabe war:

Press ENTER to continue.
</code></pre>
<p>Gruß!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/207673/getline</link><generator>RSS for Node</generator><lastBuildDate>Sun, 11 Oct 2026 09:51:49 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/207673.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 10 Mar 2008 15:58:53 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to getline on Mon, 10 Mar 2008 16:01:57 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe ein Problem mit folgendem Code:</p>
<pre><code>#include &lt;iostream&gt;
using namespace std;

int main ()
{
    char array[40];
    cout &lt;&lt; &quot;Bitte 1. Text eingeben:\n&quot;;
    cin.getline(array, sizeof(array),'.');
    cout &lt;&lt; &quot;1. Eingabe war:\n &quot; &lt;&lt; array &lt;&lt; '\n';
    cin.seekg(0,ios::end);
    cout &lt;&lt; &quot;Bitte 2. Text eingeben:\n&quot; ;
    cin.getline(array, sizeof(array),'.');
    cout &lt;&lt; &quot;2. Eingabe war:\n &quot; &lt;&lt; array &lt;&lt; '\n';
}
</code></pre>
<p>Normalerweise sollte hier eine zweite Eingabeaufforderung durchgeführt werden. Jedoch wird diese übersprungen (scheinbar) und das Programm abgebrochen. Wieso verhält sich obiger Code nicht wie erwartet.<br />
Zum Vergleich die Ausgabe:</p>
<pre><code>Bitte 1. Text eingeben:
abc.def
1. Eingabe war:
 abc
Bitte 2. Text eingeben:
2. Eingabe war:

Press ENTER to continue.
</code></pre>
<p>Gruß!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1471555</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471555</guid><dc:creator><![CDATA[Zarathustra]]></dc:creator><pubDate>Mon, 10 Mar 2008 16:01:57 GMT</pubDate></item><item><title><![CDATA[Reply to getline on Mon, 10 Mar 2008 16:59:44 GMT]]></title><description><![CDATA[<p>*push*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1471594</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471594</guid><dc:creator><![CDATA[Zarathustra]]></dc:creator><pubDate>Mon, 10 Mar 2008 16:59:44 GMT</pubDate></item><item><title><![CDATA[Reply to getline on Mon, 10 Mar 2008 17:42:08 GMT]]></title><description><![CDATA[<p>vermutlich musst du erstmal den eingabepuffer leeeren <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1471629</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471629</guid><dc:creator><![CDATA[ajoooo]]></dc:creator><pubDate>Mon, 10 Mar 2008 17:42:08 GMT</pubDate></item><item><title><![CDATA[Reply to getline on Mon, 10 Mar 2008 18:03:35 GMT]]></title><description><![CDATA[<p>Das hab ich auch mittels<br />
cin.seekg(0,ios::end);<br />
gemacht, oder besser:<br />
Damit werden die noch vorhandenen Zeichen im Eingabepuffer übersprungen.</p>
<p>Das Beispiel stammt übrigens vom cpp-tutor.<br />
Vgl. <a href="http://www.cpp-tutor.de/cpp/le04/le04_02_d1.htm" rel="nofollow">www.cpp-tutor.de/cpp/le04/le04_02_d1.htm</a><br />
Daher wundere ich mich, dass das nicht so funktioniert, wie dort angegeben...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1471638</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471638</guid><dc:creator><![CDATA[Zarathustra]]></dc:creator><pubDate>Mon, 10 Mar 2008 18:03:35 GMT</pubDate></item><item><title><![CDATA[Reply to getline on Mon, 10 Mar 2008 18:43:03 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">cin.clear();
cin.ignore();
</code></pre>
<p>damit leert man normalerweise den Puffer</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1471658</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471658</guid><dc:creator><![CDATA[double *T]]></dc:creator><pubDate>Mon, 10 Mar 2008 18:43:03 GMT</pubDate></item><item><title><![CDATA[Reply to getline on Mon, 10 Mar 2008 19:17:49 GMT]]></title><description><![CDATA[<p>Hallo,<br />
danke schön, ignore() funktioniert. Nur warum funktioniert der Code im Tutorial nicht? Ist dieser veraltert oder plattformspezifisch?</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1471685</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471685</guid><dc:creator><![CDATA[Zarathustra]]></dc:creator><pubDate>Mon, 10 Mar 2008 19:17:49 GMT</pubDate></item><item><title><![CDATA[Reply to getline on Mon, 10 Mar 2008 19:29:43 GMT]]></title><description><![CDATA[<p>Zarathustra schrieb:</p>
<blockquote>
<p>ignore() funktioniert. Nur warum funktioniert der Code im Tutorial nicht? Ist dieser veraltert oder plattformspezifisch?</p>
</blockquote>
<p>Falls Du den MS VC 6 benutzt; so liegt es daran. In der mitgelieferten STL ist die Methode getline buggy.</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1471697</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471697</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Mon, 10 Mar 2008 19:29:43 GMT</pubDate></item><item><title><![CDATA[Reply to getline on Mon, 10 Mar 2008 19:55:42 GMT]]></title><description><![CDATA[<p>Hmm, ich verwende denn GCC (siehe unten). Kann doch nicht sein, dass zwei Compiler buggy sind oder doch?<br />
Gruß!</p>
<p>g++ (GCC) 4.1.2 (Ubuntu 4.1.2-0ubuntu4)<br />
Copyright (C) 2006 Free Software Foundation, Inc.<br />
Dies ist freie Software; die Kopierbedingungen stehen in den Quellen. Es<br />
gibt KEINE Garantie; auch nicht für MARKTGÄNGIGKEIT oder FÜR SPEZIELLE ZWECKE.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1471715</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471715</guid><dc:creator><![CDATA[Zarathustra]]></dc:creator><pubDate>Mon, 10 Mar 2008 19:55:42 GMT</pubDate></item><item><title><![CDATA[Reply to getline on Mon, 10 Mar 2008 20:03:22 GMT]]></title><description><![CDATA[<p>es wird wohl am '.' liegen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1471719</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471719</guid><dc:creator><![CDATA[.........]]></dc:creator><pubDate>Mon, 10 Mar 2008 20:03:22 GMT</pubDate></item><item><title><![CDATA[Reply to getline on Mon, 10 Mar 2008 20:03:40 GMT]]></title><description><![CDATA[<p>Zarathustra  schrieb:</p>
<blockquote>
<p>danke schön, ignore() funktioniert. Nur warum funktioniert der Code im Tutorial nicht? Ist dieser veraltert oder plattformspezifisch?</p>
</blockquote>
<p>&quot;seekg(0,ios::end)&quot;; setzt die Leseposition (seekg = seek get) auf das Byte Nr. x. (erstes Byte hat die Nr. '0'.) Mit seekg kann man absolut auf ein bestimmtes Byte und relativ vom Anfang, vom Ende und von der aktuellen Position her positionieren:</p>
<pre><code class="language-cpp">cin.seekg (xnr, ios::end);
</code></pre>
<p>positioniert relativ zum Ende.</p>
<p>Mit</p>
<pre><code class="language-cpp">cin.seekg (0, ios::end);
</code></pre>
<p>wird auf das ende des Eingabepuffers positioniert, mit</p>
<pre><code class="language-cpp">cin.ignore();
</code></pre>
<p>wird der eingabepuffer geleert.</p>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> letztendlich versetzt cin.clear() cin wieder in den Anfangsstatus (zB Fehler werden wieder zurückgesetzt). cin.ignore(); löscht alle Zeichen die noch im Einagebpuffer stehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1471720</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471720</guid><dc:creator><![CDATA[double *T]]></dc:creator><pubDate>Mon, 10 Mar 2008 20:03:40 GMT</pubDate></item><item><title><![CDATA[Reply to getline on Tue, 11 Mar 2008 09:59:20 GMT]]></title><description><![CDATA[<p>@double*T</p>
<p>Wie ignore() und clear() funktionieren ist mir schon klar. Nur frage ich mich, ob der Code im Tutorial falsch ist. Mit seekg (s.o.) wird in diesem Fall der Rest der Eingabe &quot;übersprungen&quot;, daher sollte dieses Verhalten normalerweise nicht auftreten. Ich frage mich nur, warum sich das Programm nicht so verhält wie erwartet?!</p>
<p>Gruß!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1471909</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471909</guid><dc:creator><![CDATA[Zarathustra]]></dc:creator><pubDate>Tue, 11 Mar 2008 09:59:20 GMT</pubDate></item><item><title><![CDATA[Reply to getline on Tue, 11 Mar 2008 10:46:54 GMT]]></title><description><![CDATA[<p>also wenn ich das Verhalten von getline() richtig kapiert hab dann passiert folgendes in deinem programm:</p>
<p>- erster Aufruf von getline(): nichts im streambuf, also wird gewartet bsi der User was eingibt. Nach Eingabe wird bis zum Punkt ausgelesen, der Punkt wird verworfen -&gt; erste Eingabe war &quot;abc&quot;<br />
- seekg(): der Lesezeiger im buffer von cin wird hinter das letzte Zeichen im Input gesetzt (in deinem Beispiel hinter das f)<br />
- zweiter Aufruf von getline(): es sind noch Zeichen im streambuf, also wird nicht auf Eingabe gewartet. Daher wird sofort bis zumnaechsten Puntk oder bis zum Ende des Buffers ausgelesen. Da der Lesezeiger schon am Ende steht, wird nichts ausgelesen und array[0] == '\0' -&gt; zweite Eingabe war &quot;&quot;</p>
<p>Ich denke mal dass du entweder das Beispiel aus dem Tutorial abgeaendert hast oder dass das Beispiel fehlerhaft ist. Im uebrigen wuerde ich lieber std::string an Stelle eines char-Arrays nutzen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1471946</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471946</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 11 Mar 2008 10:46:54 GMT</pubDate></item><item><title><![CDATA[Reply to getline on Tue, 11 Mar 2008 11:15:27 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/9960">@pumuckl</a>:<br />
Gut, dann war wohl das Beispiels fehlerhaft. std::string kenn ich leider (noch) nicht.</p>
<p>Danke Schön!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1471966</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471966</guid><dc:creator><![CDATA[Zarathustra]]></dc:creator><pubDate>Tue, 11 Mar 2008 11:15:27 GMT</pubDate></item><item><title><![CDATA[Reply to getline on Tue, 11 Mar 2008 12:37:11 GMT]]></title><description><![CDATA[<p>Zarathustra schrieb:</p>
<blockquote>
<p>std::string kenn ich leider (noch) nicht.</p>
</blockquote>
<p>Dann wirds aber Zeit! Ich hoffe du hast nicht eines der Tutorials erwischt die erstmal mit char-Arrays herumwerkeln wo doch das Arbeiten mit std::string nicht nur fuer Anfaenger sher viel einfacher und vor allem sicherer ist...</p>
<p>/edit: naja ok, strings werden dann in Kapitel 6 eingefuehrt. Evtl lohnt sich das, einen Abstecher dorthin zu machen <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/1472016</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1472016</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 11 Mar 2008 12:37:11 GMT</pubDate></item><item><title><![CDATA[Reply to getline on Wed, 12 Mar 2008 16:48:53 GMT]]></title><description><![CDATA[<p>Im Tutorial heisst es hierzu auch:</p>
<blockquote>
<p>Die nachfolgenden Ausführungen dienen eigentlich nur zur Übung im Umgang mit Feldern. C++ besitzt auch eine Standard Bibliothek die Verarbeitung von Strings erheblich vereinfacht. Mehr dazu aber nachher noch. Viele ältere (und leider auch neuere) C++ Programme legen Strings aber immer noch in char-Feldern ab.</p>
</blockquote>
<p>Also kein Grund zur Aufregung ... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":-)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1473118</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1473118</guid><dc:creator><![CDATA[Zarathustra]]></dc:creator><pubDate>Wed, 12 Mar 2008 16:48:53 GMT</pubDate></item></channel></rss>