<?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>ich habe folgenden code zusammengebastelt<br />
leider funktioniert das mit getline() nicht bei der methode TextPram nicht meine ausgabe ist dann folgende?</p>
<p>text?<br />
x?</p>
<p>also das prog macht anscheinend gleich ein Return \n<br />
Wieso ich checks nicht!?!?! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<pre><code class="language-cpp">void Input::choose ()
{
 string input_;
 int choice;
 int textCounter;
 for (;;)
 {
   cout &lt;&lt; &quot;svg&gt; &quot;;
   cin &gt;&gt; input_;
   choice = CheckInput (input_);
   if (choice == quit)
     break;
   switch (choice)
    {
    case text:
     TextParam ();
     break;
    case image: cout &lt;&lt; &quot;test Image&quot; &lt;&lt; endl;
     break;
    case polygon:cout &lt;&lt; &quot;test polygon&quot; &lt;&lt; endl;
     break;
    case list:cout &lt;&lt; &quot;test list&quot; &lt;&lt; endl;
     break;
    case save:cout &lt;&lt; &quot;test save&quot; &lt;&lt; endl;
     break;
    case notIdentified:
     break;
    default: break;
    }
 }
}

void Input::TextParam ()
{
 string input_;
 cout &lt;&lt; &quot;text? &quot;;
 getline (cin, input_);
 cout &lt;&lt; input_;
 vText.push_back (input_);
 cout &lt;&lt; vText[0];
 do
 {
   cout &lt;&lt; &quot;\nx? &quot;;
   cin &gt;&gt; input_;
 } while (!CheckForInt (input_));
 vText.push_back (input_);

 do
 {
   cout &lt;&lt; &quot;\ny? &quot;;
   cin &gt;&gt; input_;
 } while (!CheckForInt (input_));
 do
 {
   cout &lt;&lt; &quot;\nx? &quot;;
   cin &gt;&gt; input_;
 } while (!CheckForInt (input_));
 vText.push_back (input_);
 /* cout &lt;&lt; &quot;\nfill? &quot; &lt;&lt;;
  cin &gt;&gt; input_;
  text1.push_back (input_);
  cout &lt;&lt; &quot;\ngroup? &quot; &lt;&lt;;
  cin &gt;&gt; input_;
  text1.push_back (input_);*/

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/266049/getline</link><generator>RSS for Node</generator><lastBuildDate>Thu, 03 Sep 2026 15:44:24 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/266049.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 03 May 2010 11:28:38 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to getline() on Mon, 03 May 2010 11:28:38 GMT]]></title><description><![CDATA[<p>ich habe folgenden code zusammengebastelt<br />
leider funktioniert das mit getline() nicht bei der methode TextPram nicht meine ausgabe ist dann folgende?</p>
<p>text?<br />
x?</p>
<p>also das prog macht anscheinend gleich ein Return \n<br />
Wieso ich checks nicht!?!?! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<pre><code class="language-cpp">void Input::choose ()
{
 string input_;
 int choice;
 int textCounter;
 for (;;)
 {
   cout &lt;&lt; &quot;svg&gt; &quot;;
   cin &gt;&gt; input_;
   choice = CheckInput (input_);
   if (choice == quit)
     break;
   switch (choice)
    {
    case text:
     TextParam ();
     break;
    case image: cout &lt;&lt; &quot;test Image&quot; &lt;&lt; endl;
     break;
    case polygon:cout &lt;&lt; &quot;test polygon&quot; &lt;&lt; endl;
     break;
    case list:cout &lt;&lt; &quot;test list&quot; &lt;&lt; endl;
     break;
    case save:cout &lt;&lt; &quot;test save&quot; &lt;&lt; endl;
     break;
    case notIdentified:
     break;
    default: break;
    }
 }
}

void Input::TextParam ()
{
 string input_;
 cout &lt;&lt; &quot;text? &quot;;
 getline (cin, input_);
 cout &lt;&lt; input_;
 vText.push_back (input_);
 cout &lt;&lt; vText[0];
 do
 {
   cout &lt;&lt; &quot;\nx? &quot;;
   cin &gt;&gt; input_;
 } while (!CheckForInt (input_));
 vText.push_back (input_);

 do
 {
   cout &lt;&lt; &quot;\ny? &quot;;
   cin &gt;&gt; input_;
 } while (!CheckForInt (input_));
 do
 {
   cout &lt;&lt; &quot;\nx? &quot;;
   cin &gt;&gt; input_;
 } while (!CheckForInt (input_));
 vText.push_back (input_);
 /* cout &lt;&lt; &quot;\nfill? &quot; &lt;&lt;;
  cin &gt;&gt; input_;
  text1.push_back (input_);
  cout &lt;&lt; &quot;\ngroup? &quot; &lt;&lt;;
  cin &gt;&gt; input_;
  text1.push_back (input_);*/

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1891688</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1891688</guid><dc:creator><![CDATA[EvilStuff]]></dc:creator><pubDate>Mon, 03 May 2010 11:28:38 GMT</pubDate></item><item><title><![CDATA[Reply to getline() on Mon, 03 May 2010 11:49:43 GMT]]></title><description><![CDATA[<p>hallo und bitte natürlich hab ich ganz vergessen! <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/1891703</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1891703</guid><dc:creator><![CDATA[Evilstuff]]></dc:creator><pubDate>Mon, 03 May 2010 11:49:43 GMT</pubDate></item><item><title><![CDATA[Reply to getline() on Mon, 03 May 2010 12:35:54 GMT]]></title><description><![CDATA[<p>Das ist noch das newline-Zeichen von der vorherigen Eingabe. Dort hast du nämlich einen int über den Operator &gt;&gt; eingelesen. Der Operator &gt;&gt; hat dabei in den Eingabestream geguckt und so lange Zeichen daraus gelesen, wie diese Zeichen Ziffern waren. Das erste Zeichen welches keine Ziffer war, war das newline-Zeichen, das du zur Bestätigung der Eingabe der Zahl eingetippt hast. Bei diesem Zeichen hat der Operator &gt;&gt; Schluss gemacht und es ist daher bei der nächsten Eingabeoperation das erste Zeichen im Eingabestream. Und da getline() bis zum nächsten newline-Zeichen liest, liest es bei der nächsten Operation gar nichts ein.</p>
<p>Lösungsvorschläge:<br />
- Zwischendurch den ganzen Eingabepuffer leeren (mit ignore())<br />
- Zwischendurch das nächste newline-Zeichen ignorieren (ebenfalls mit ingore())<br />
- Immer nur getline verwenden, auch wenn man Zahlen einliest<br />
- Da dies auf ein reines Tastatureingabesystem hinausläuft, kannst du auch gleich eine Bibliothek verwenden, die auf reine Tastatureingaben spezialisiert ist (z.B. ncurses für Linux-Konsolen)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1891718</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1891718</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 03 May 2010 12:35:54 GMT</pubDate></item><item><title><![CDATA[Reply to getline() on Mon, 03 May 2010 13:06:02 GMT]]></title><description><![CDATA[<p>danke für deine hilfe hat funktioniert.<br />
leider darf ich dies bibliothek nicht benutzen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>ich habe gerade bemerkt, dass wenn ich bei x? 1 2 eingebe das leerzeichen in meiner checkForInt methode nicht erkannt wird und der string inkl. leerzeichen in meinen vektor gespeichert wird.</p>
<p>ich dachte mit isdigit erkennt er nur zahlen</p>
<pre><code class="language-cpp">bool Input::CheckForInt (string param)
{
 for (int i = 0; i &lt; param.length (); i++)
 {
   if (isdigit (param[i])) // vl größer kleimer ascii
   {
     if (param.length () == i + 1)
     {
       return true;
     }
   }
 }
 return false;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1891734</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1891734</guid><dc:creator><![CDATA[EvilStuff]]></dc:creator><pubDate>Mon, 03 May 2010 13:06:02 GMT</pubDate></item><item><title><![CDATA[Reply to getline() on Mon, 03 May 2010 13:37:15 GMT]]></title><description><![CDATA[<p>Du musst nicht selber auf int prüfen. Nutz einfach den Operator &gt;&gt;. Der erkennt das automatisch. War die Eingabe keine Zahl, obwohl eine erwartet wurde, so wird das Fehlerflag des Streams gesetzt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1891755</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1891755</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 03 May 2010 13:37:15 GMT</pubDate></item><item><title><![CDATA[Reply to getline() on Mon, 03 May 2010 13:37:58 GMT]]></title><description><![CDATA[<p>hab noch isblank eingebaut</p>
<pre><code class="language-cpp">bool Input::CheckForInt (string param)
{
 if (param == &quot;Space&quot;)
   return false;
 for (int i = 0; i &lt; param.length (); i++)
 {
   if (isblank (param[i]))
     return false;

   if (isdigit (param[i])) // vl größer kleimer ascii
   {
     if (param.length () == i + 1)
     {
       return true;
     }
   }
 }
 return false;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1891756</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1891756</guid><dc:creator><![CDATA[EvilStuff]]></dc:creator><pubDate>Mon, 03 May 2010 13:37:58 GMT</pubDate></item></channel></rss>