<?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[Anfängerfrage zu Getline]]></title><description><![CDATA[<p>Hallo, ich bin der Neue <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>
<p>Ich schreibe zZt ein kleines Programm auf dem Raspberry Pi, was mir Code auf der seriellen Schnittstelle ausgibt.</p>
<p>Ich habe zwei kleine &quot;Menüs&quot;, wo die Auswahl mit cin eingelesen wird. Kein Problem. Jetzt möchte ich einen String mit Leerzeichen einlesen und bin deshalb auf getline angewiesen. Soweit so gut, die übliche Syntax ist mir bekannt, aus irgendeinem Grunde will es aber nicht funktionieren:</p>
<pre><code>void fbm_menu ()
{
int x = 1;

while (x == 1){

printf(&quot;\033[2J&quot;);
cout &lt;&lt; &quot;[ 1 ] string schreiben&quot; &lt;&lt; std::endl;
cout &lt;&lt; &quot;[ 2 ] reset&quot; &lt;&lt; std::endl;
cout &lt;&lt; &quot;[ 3 ] back&quot; &lt;&lt; std::endl;
cout &lt;&lt; &quot;Eingabe: &quot;;
int vote;
cin &gt;&gt; vote;

if (vote == 1)
{

		char eingabe[100];
		string mystr;
		cout &lt;&lt; &quot;&quot; &lt;&lt; std::endl;
		cout &lt;&lt; &quot;Text eingeben: &quot;;
		getline (cin,mystr);				// GETLINE-PROBLEM
		strcpy(eingabe,mystr.c_str());

		int laenge = strlen(eingabe);

		if (laenge &lt; module+1){

		fbm_write_str(eingabe);
		}

		else {
		char exception[]= &quot;too long&quot;;
		fbm_write_str(exception);
		}
		}

else if (vote == 2)
{
 fbm_reset();
		}

else{ x = 0;}

}
}
</code></pre>
<p>ich habe es auch mit cin.getline(eingabe,99); probiert, also direkt als Char Array. Der Fehler ist identisch und zeigt sich wie folgt:</p>
<p>Bei Auswahl von Menüpunkt 1 wird sofort ein komplett leeres Array an die fbm_write_str() geschickt. Es gibt keinerlei Eingabemöglichkeit.</p>
<p>Mittlerweile glaube ich an einen ganz bösen Anfängerfehler, da mein Problem ja offensichtlich mit solch einem einfachen Beispiel vergleichbar ist:<br />
<a href="http://www.java2s.com/Code/Cpp/File/Usegetlinetoreadastringthatcontainsspaces.htm" rel="nofollow">http://www.java2s.com/Code/Cpp/File/Usegetlinetoreadastringthatcontainsspaces.htm</a></p>
<p>Trotzdem geht es nicht, die Funktion fbm_write_str() wird ausgeführt ohne dass ich überhaupt eine Eingabe tätige.</p>
<p>Über einen Wink mit dem Zaunpfahl wäre ich dankbar. Ein cin &gt;&gt; mystr; an dieser Stelle funktioniert einwandfrei, nur brauche ich eben Leerzeichen.</p>
<p>Viele Grüße und eine gute Woche,<br />
Julian</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/311314/anfängerfrage-zu-getline</link><generator>RSS for Node</generator><lastBuildDate>Mon, 03 Aug 2026 16:43:27 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/311314.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 02 Dec 2012 20:01:18 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Anfängerfrage zu Getline on Sun, 02 Dec 2012 20:01:18 GMT]]></title><description><![CDATA[<p>Hallo, ich bin der Neue <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>
<p>Ich schreibe zZt ein kleines Programm auf dem Raspberry Pi, was mir Code auf der seriellen Schnittstelle ausgibt.</p>
<p>Ich habe zwei kleine &quot;Menüs&quot;, wo die Auswahl mit cin eingelesen wird. Kein Problem. Jetzt möchte ich einen String mit Leerzeichen einlesen und bin deshalb auf getline angewiesen. Soweit so gut, die übliche Syntax ist mir bekannt, aus irgendeinem Grunde will es aber nicht funktionieren:</p>
<pre><code>void fbm_menu ()
{
int x = 1;

while (x == 1){

printf(&quot;\033[2J&quot;);
cout &lt;&lt; &quot;[ 1 ] string schreiben&quot; &lt;&lt; std::endl;
cout &lt;&lt; &quot;[ 2 ] reset&quot; &lt;&lt; std::endl;
cout &lt;&lt; &quot;[ 3 ] back&quot; &lt;&lt; std::endl;
cout &lt;&lt; &quot;Eingabe: &quot;;
int vote;
cin &gt;&gt; vote;

if (vote == 1)
{

		char eingabe[100];
		string mystr;
		cout &lt;&lt; &quot;&quot; &lt;&lt; std::endl;
		cout &lt;&lt; &quot;Text eingeben: &quot;;
		getline (cin,mystr);				// GETLINE-PROBLEM
		strcpy(eingabe,mystr.c_str());

		int laenge = strlen(eingabe);

		if (laenge &lt; module+1){

		fbm_write_str(eingabe);
		}

		else {
		char exception[]= &quot;too long&quot;;
		fbm_write_str(exception);
		}
		}

else if (vote == 2)
{
 fbm_reset();
		}

else{ x = 0;}

}
}
</code></pre>
<p>ich habe es auch mit cin.getline(eingabe,99); probiert, also direkt als Char Array. Der Fehler ist identisch und zeigt sich wie folgt:</p>
<p>Bei Auswahl von Menüpunkt 1 wird sofort ein komplett leeres Array an die fbm_write_str() geschickt. Es gibt keinerlei Eingabemöglichkeit.</p>
<p>Mittlerweile glaube ich an einen ganz bösen Anfängerfehler, da mein Problem ja offensichtlich mit solch einem einfachen Beispiel vergleichbar ist:<br />
<a href="http://www.java2s.com/Code/Cpp/File/Usegetlinetoreadastringthatcontainsspaces.htm" rel="nofollow">http://www.java2s.com/Code/Cpp/File/Usegetlinetoreadastringthatcontainsspaces.htm</a></p>
<p>Trotzdem geht es nicht, die Funktion fbm_write_str() wird ausgeführt ohne dass ich überhaupt eine Eingabe tätige.</p>
<p>Über einen Wink mit dem Zaunpfahl wäre ich dankbar. Ein cin &gt;&gt; mystr; an dieser Stelle funktioniert einwandfrei, nur brauche ich eben Leerzeichen.</p>
<p>Viele Grüße und eine gute Woche,<br />
Julian</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2276613</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2276613</guid><dc:creator><![CDATA[Subi88]]></dc:creator><pubDate>Sun, 02 Dec 2012 20:01:18 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage zu Getline on Sun, 02 Dec 2012 20:08:12 GMT]]></title><description><![CDATA[<p>...</p>
<p>P.S: Zu schnell getippt. Kann gelöscht werden</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2276618</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2276618</guid><dc:creator><![CDATA[eddi0815]]></dc:creator><pubDate>Sun, 02 Dec 2012 20:08:12 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage zu Getline on Sun, 02 Dec 2012 20:11:14 GMT]]></title><description><![CDATA[<p>eddi0815 schrieb:</p>
<blockquote>
<p>Nimm doch einfach std::string.</p>
<p><a href="http://www.cplusplus.com/reference/string/getline/" rel="nofollow">http://www.cplusplus.com/reference/string/getline/</a></p>
</blockquote>
<p>+1, jedoch nicht das eigentliche Problem. Das eigentliche Problem hat wohl jeder Erstnutzer von getline: operator&gt;&gt; trennt Eingaben an Whitespaces, ohne diesen mit aus dem Stream zu lesen. getline trennt an newlines ('\n', auch eine Form von Whitespace), liest diese aber mit aus dem Stream. Wenn nun jemand als Beispieleingabe &quot;1\nHallo Welt\n&quot; eingibt, dann wird in Zeile 13 die '1' gelesen und beim '\n' aufgehört. Im Eingabestrom befindet sich nun &quot;\nHallo Welt\n&quot;. Das darauf folgende getline in Zeile 25 liest bis zum ersten '\n' welches es findet. getline wird schon beim ersten Zeichen fündig, ist also sofort fertig und liest gar nichts. Im Eingabestrom befindet sich nun &quot;Hallo Welt\n&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2276619</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2276619</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 02 Dec 2012 20:11:14 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage zu Getline on Sun, 02 Dec 2012 20:32:34 GMT]]></title><description><![CDATA[<p>Vielen Dank für die Erklärung!</p>
<p>Als Lösung fällt mir jetzt nur ein, auch oben mit getline zu arbeiten. Werde das gleich mal testen.</p>
<p>Dein Einwand von eddi0815 verstehe ich (unabhängig) vom Problem nicht ganz. Meine Syntax ist doch gleich?</p>
<p>edit: Habe jetzt überall getline verwendet und es funktioniert wie gewünscht.<br />
Danke noch einmal für die super schnelle Hilfe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2276622</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2276622</guid><dc:creator><![CDATA[Subi88]]></dc:creator><pubDate>Sun, 02 Dec 2012 20:32:34 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage zu Getline on Sun, 02 Dec 2012 20:37:25 GMT]]></title><description><![CDATA[<p>Wie gesagt, ich habe meine Antwort zu schnell gegeben. Ich habe dabei übersehen, daß du ja schon mit string arbeitest.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2276625</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2276625</guid><dc:creator><![CDATA[eddi0815]]></dc:creator><pubDate>Sun, 02 Dec 2012 20:37:25 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage zu Getline on Sun, 02 Dec 2012 20:50:12 GMT]]></title><description><![CDATA[<p>Mich machte das &quot;+1&quot; von Sepp stutzig <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>
<p>Vielleicht meinte er aber auch nur, dass eine konsequente Nutzung von string besser ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2276627</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2276627</guid><dc:creator><![CDATA[Subi88]]></dc:creator><pubDate>Sun, 02 Dec 2012 20:50:12 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage zu Getline on Sun, 02 Dec 2012 21:21:26 GMT]]></title><description><![CDATA[<p>Subi88 schrieb:</p>
<blockquote>
<p>Vielleicht meinte er aber auch nur, dass eine konsequente Nutzung von string besser ist.</p>
</blockquote>
<p>So ist es.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2276633</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2276633</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 02 Dec 2012 21:21:26 GMT</pubDate></item></channel></rss>