<?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[Einlesen von String mit getline() wird übersprungen :S]]></title><description><![CDATA[<p>Guten Tag!</p>
<p>Bei folgendem Programmauszug habe ich das Problem, dass das erste Einlesen des Strings übersprungen wird.<br />
Der Anwender hat also keine Möglichkeit den String für &quot;NAME&quot; einzugeben, sondern wird gleich aufgefordert den String für &quot;BESITZER&quot; einzugeben. Die Ausgabe lautet:</p>
<pre><code>Wieviele Patienten wollen Sie eingeben?

Geben Sie den Namen ein!     //hier folgt keine Eingabemöglichkeit
Geben Sie den Besitzer ein!
[e]rarr[/e]
</code></pre>
<p>Kann mir jemand einen Schubbs in die richtige Richtung geben, damit ich die Problematik erkenne und dann recherchieren kann?</p>
<p>Sicher könnte ich das Programm einfach anders aufbauen, ich möchte aber gerne wissen, warum es tut was es tut. Vielen Dank für alle Antworten!</p>
<pre><code class="language-cpp">#include &quot;stdafx.h&quot;
#include &lt;iostream&gt;
#include &quot;string&quot;
using namespace std;

struct Patient{
	string Name;
	string Besitzer;
	string Art;
	string Diagnose;
	int Alter;

};struct Patient Alle[3];

char patienteneingabe()
{
	cout&lt;&lt;&quot;Wieviele PAtienten wollen Sie eingeben?&quot;;
	int anzahl;
	cin&gt;&gt;anzahl;

	for (int i=0;i&lt;anzahl;i++)
	{	
		cout&lt;&lt;endl&lt;&lt;&quot;Geben Sie den Namen ein!!!!&quot;&lt;&lt;endl;
		getline(cin, Alle[i].Name);

		cout&lt;&lt;&quot;Geben Sie den Besitzer ein!!!!&quot;&lt;&lt;endl;
		getline(cin, Alle[i].Besitzer);

		cout&lt;&lt;&quot;Geben Sie die Art ein!!!!&quot;&lt;&lt;endl;
		getline(cin, Alle[i].Art);

		cout&lt;&lt;&quot;Diagnose??&quot;&lt;&lt;endl;
		getline(cin, Alle[i].Diagnose);

		cout&lt;&lt;&quot;Geben Sie das Alter ein!!!!&quot;&lt;&lt;endl;
		cin &gt;&gt; Alle[i].Alter;		
	}
	return 0;
}

int main()
{
		patienteneingabe();	
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/299515/einlesen-von-string-mit-getline-wird-übersprungen-s</link><generator>RSS for Node</generator><lastBuildDate>Thu, 13 Aug 2026 05:13:48 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/299515.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 12 Feb 2012 20:08:21 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Einlesen von String mit getline() wird übersprungen :S on Sun, 12 Feb 2012 20:08:21 GMT]]></title><description><![CDATA[<p>Guten Tag!</p>
<p>Bei folgendem Programmauszug habe ich das Problem, dass das erste Einlesen des Strings übersprungen wird.<br />
Der Anwender hat also keine Möglichkeit den String für &quot;NAME&quot; einzugeben, sondern wird gleich aufgefordert den String für &quot;BESITZER&quot; einzugeben. Die Ausgabe lautet:</p>
<pre><code>Wieviele Patienten wollen Sie eingeben?

Geben Sie den Namen ein!     //hier folgt keine Eingabemöglichkeit
Geben Sie den Besitzer ein!
[e]rarr[/e]
</code></pre>
<p>Kann mir jemand einen Schubbs in die richtige Richtung geben, damit ich die Problematik erkenne und dann recherchieren kann?</p>
<p>Sicher könnte ich das Programm einfach anders aufbauen, ich möchte aber gerne wissen, warum es tut was es tut. Vielen Dank für alle Antworten!</p>
<pre><code class="language-cpp">#include &quot;stdafx.h&quot;
#include &lt;iostream&gt;
#include &quot;string&quot;
using namespace std;

struct Patient{
	string Name;
	string Besitzer;
	string Art;
	string Diagnose;
	int Alter;

};struct Patient Alle[3];

char patienteneingabe()
{
	cout&lt;&lt;&quot;Wieviele PAtienten wollen Sie eingeben?&quot;;
	int anzahl;
	cin&gt;&gt;anzahl;

	for (int i=0;i&lt;anzahl;i++)
	{	
		cout&lt;&lt;endl&lt;&lt;&quot;Geben Sie den Namen ein!!!!&quot;&lt;&lt;endl;
		getline(cin, Alle[i].Name);

		cout&lt;&lt;&quot;Geben Sie den Besitzer ein!!!!&quot;&lt;&lt;endl;
		getline(cin, Alle[i].Besitzer);

		cout&lt;&lt;&quot;Geben Sie die Art ein!!!!&quot;&lt;&lt;endl;
		getline(cin, Alle[i].Art);

		cout&lt;&lt;&quot;Diagnose??&quot;&lt;&lt;endl;
		getline(cin, Alle[i].Diagnose);

		cout&lt;&lt;&quot;Geben Sie das Alter ein!!!!&quot;&lt;&lt;endl;
		cin &gt;&gt; Alle[i].Alter;		
	}
	return 0;
}

int main()
{
		patienteneingabe();	
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2180304</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2180304</guid><dc:creator><![CDATA[sharkoozie]]></dc:creator><pubDate>Sun, 12 Feb 2012 20:08:21 GMT</pubDate></item><item><title><![CDATA[Reply to Einlesen von String mit getline() wird übersprungen :S on Sun, 12 Feb 2012 20:10:49 GMT]]></title><description><![CDATA[<p>Probiers mit</p>
<pre><code class="language-cpp">cin.ignore(numeric_limits&lt;streamsize&gt;::max(), '\n');
</code></pre>
<p>nach <code>cin&gt;&gt;anzahl;</code> und <code>cin &gt;&gt; Alle[i].Alter;</code> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2180305</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2180305</guid><dc:creator><![CDATA[merkotzi]]></dc:creator><pubDate>Sun, 12 Feb 2012 20:10:49 GMT</pubDate></item><item><title><![CDATA[Reply to Einlesen von String mit getline() wird übersprungen :S on Sun, 12 Feb 2012 20:17:59 GMT]]></title><description><![CDATA[<p>Oder du mischt 'cin &gt;&gt; ...' und 'getline(...)' nicht. 'getline' kann man eigentlich für alles verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2180306</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2180306</guid><dc:creator><![CDATA[Thuruk]]></dc:creator><pubDate>Sun, 12 Feb 2012 20:17:59 GMT</pubDate></item><item><title><![CDATA[Reply to Einlesen von String mit getline() wird übersprungen :S on Sun, 12 Feb 2012 20:29:20 GMT]]></title><description><![CDATA[<p>Danke merkotzi.<br />
So funktioniert es tatsächlich. Ich werde die Funktionsweise, die dahinter steckt mal nachlesen.</p>
<p>DankeThuruk<br />
Ich muss mir wohl nochmal n bissel was über diese Funktion durchlesen, bin grad etwas verwirrt, weil ich ein ähnliches problem bekomme, wenn ich das Einlesen mit cin&gt;&gt; mache. Dann folgt ab dem zweiten Durchlauf garkein Einlesen mehr.</p>
<p>mfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2180310</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2180310</guid><dc:creator><![CDATA[sharkoozie]]></dc:creator><pubDate>Sun, 12 Feb 2012 20:29:20 GMT</pubDate></item><item><title><![CDATA[Reply to Einlesen von String mit getline() wird übersprungen :S on Sun, 12 Feb 2012 20:37:26 GMT]]></title><description><![CDATA[<p>Du solltest eine Struktur 'Alle[anzahl]' nach der Eingabe der Anzahl erstellen. So können maximal 3 Patienten eingegeben werden. Beim 4. schreibst du im schlimmsten Fall über irgendwas anderes im Arbeitsspeicher.^^</p>
<p>Also aus Zeile 16 entfernen und in Zeile 23 erstellen. <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/2180312</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2180312</guid><dc:creator><![CDATA[Thuruk]]></dc:creator><pubDate>Sun, 12 Feb 2012 20:37:26 GMT</pubDate></item><item><title><![CDATA[Reply to Einlesen von String mit getline() wird übersprungen :S on Sun, 12 Feb 2012 20:47:55 GMT]]></title><description><![CDATA[<p>aber als arraygröße muss man doch eine konstante verwenden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2180315</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2180315</guid><dc:creator><![CDATA[sharkoozie]]></dc:creator><pubDate>Sun, 12 Feb 2012 20:47:55 GMT</pubDate></item><item><title><![CDATA[Reply to Einlesen von String mit getline() wird übersprungen :S on Sun, 12 Feb 2012 21:01:47 GMT]]></title><description><![CDATA[<p>sharkoozie schrieb:</p>
<blockquote>
<p>So funktioniert es tatsächlich. Ich werde die Funktionsweise, die dahinter steckt mal nachlesen.</p>
</blockquote>
<p>Nachdem du einen int (anzahl) eingelesen hast, ist das nächste Zeichen im Eingabestrom '\n', sodass dir der erste getline-Aufruf einen leeren String zurückgibt. Du kannst das Problem auch lösen, indem du nur ein einzelnes Zeichen ignorierst.</p>
<p>Thuruk schrieb:</p>
<blockquote>
<p>Du solltest eine Struktur 'Alle[anzahl]' nach der Eingabe der Anzahl erstellen. So können maximal 3 Patienten eingegeben werden. Beim 4. schreibst du im schlimmsten Fall über irgendwas anderes im Arbeitsspeicher.^^</p>
</blockquote>
<p>Man sollte überhaupt keine rohen Arrays verwenden. Hier wäre std::vector&lt;Patient&gt; angebracht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2180321</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2180321</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Sun, 12 Feb 2012 21:01:47 GMT</pubDate></item><item><title><![CDATA[Reply to Einlesen von String mit getline() wird übersprungen :S on Mon, 13 Feb 2012 05:06:15 GMT]]></title><description><![CDATA[<p>sharkoozie schrieb:</p>
<blockquote>
<p>aber als arraygröße muss man doch eine konstante verwenden?</p>
</blockquote>
<p>Du kannst zuerst einen Zeiger *Alle definieren, und dann mittels 'Alle=new Patient[anzahl]' das Array erzeugen. So zum Beispiel (mit getline):</p>
<pre><code class="language-cpp">#include &lt;string&gt;
#include &lt;iostream&gt;

using namespace std;

struct Patient{
	string Name;
	string Besitzer;
	string Art;
	string Diagnose;
	short Alter;

};

class Patientenliste{
private:
	Patient *Liste;
	short anzahl;
public:
	Patientenliste()
	{
		string atoi_str;
		cout&lt;&lt;&quot;Wieviele Patienten wollen Sie eingeben? &quot;;
		getline(cin, atoi_str);
		anzahl=atoi(atoi_str.c_str());

		Liste=new Patient[anzahl];

		for(short i=0;i&lt;anzahl;++i)
		{   
			cout &lt;&lt; &quot;Geben Sie den Namen ein: &quot;;
			getline(cin, Liste[i].Name);

			cout &lt;&lt; &quot;Geben Sie den Besitzer ein: &quot;;
			getline(cin, Liste[i].Besitzer);

			cout &lt;&lt; &quot;Geben Sie die Art ein: &quot;;
			getline(cin, Liste[i].Art);

			cout &lt;&lt; &quot;Diagnose: &quot;;
			getline(cin, Liste[i].Diagnose);

			cout &lt;&lt; &quot;Geben Sie das Alter ein: &quot;;
			getline(cin, atoi_str);
			Liste[i].Alter=atoi(atoi_str.c_str());
		}

	}

	~Patientenliste(void){
		delete []Liste;
	}

	void Ausgabe(void)
	{
		for(short i=0;i&lt;anzahl;++i)
		{
			cout &lt;&lt; &quot;Name: &quot; &lt;&lt; Liste[i].Name &lt;&lt; &quot;, Besitzer: &quot; &lt;&lt; Liste[i].Besitzer &lt;&lt; &quot;, Art: &quot; &lt;&lt; Liste[i].Art &lt;&lt; &quot;, Diagnose: &quot; &lt;&lt; Liste[i].Diagnose &lt;&lt; &quot;, Alter: &quot; &lt;&lt; Liste[i].Alter &lt;&lt; '\n';
		}
	}
};

int main()
{
	Patientenliste Neu;
	Neu.Ausgabe();

	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2180344</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2180344</guid><dc:creator><![CDATA[Thuruk]]></dc:creator><pubDate>Mon, 13 Feb 2012 05:06:15 GMT</pubDate></item><item><title><![CDATA[Reply to Einlesen von String mit getline() wird übersprungen :S on Mon, 13 Feb 2012 09:19:46 GMT]]></title><description><![CDATA[<p>Thuruk schrieb:</p>
<blockquote>
<p>Du kannst zuerst einen Zeiger *Alle definieren, und dann mittels 'Alle=new Patient[anzahl]' das Array erzeugen.</p>
</blockquote>
<p>und warum keinen std::vector? macht dasselbe, nur ohne &quot;new&quot;...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2180379</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2180379</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Mon, 13 Feb 2012 09:19:46 GMT</pubDate></item><item><title><![CDATA[Reply to Einlesen von String mit getline() wird übersprungen :S on Mon, 13 Feb 2012 11:34:04 GMT]]></title><description><![CDATA[<p>Kann er ja auch machen, ich hab nichts dagegen gesagt. <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/2180426</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2180426</guid><dc:creator><![CDATA[Thuruk]]></dc:creator><pubDate>Mon, 13 Feb 2012 11:34:04 GMT</pubDate></item></channel></rss>