<?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[Seltsames vorgehen bei Eingabe von String    KLASSEN]]></title><description><![CDATA[<p>Guten Morgen und frohes neues :3<br />
Ich spiele gerade mit Klassen und Strings rum und da ist mir echt etwas negatives aufgefallen.</p>
<p>Wenn ich bei der ersten Eingabe bei nem String eine Leertaste eingebe z.B<br />
&quot;Earl Grey&quot;</p>
<p>Denkt sich mein Programm das Grey wäre für die zweite Eingabe <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /><br />
Und handelt dementsprechend auch xD</p>
<p>main.cpp</p>
<pre><code>#include &lt;iostream&gt;
#include &quot;tee.h&quot;
#include &lt;string&gt;
using namespace std;

int main()
{
    string eingabe;
    tee schwarztee;
    cout &lt;&lt; &quot;bitte gib die sorte ein &quot;;
    cin &gt;&gt; eingabe;
    schwarztee.write_sorte(eingabe);
    cout &lt;&lt; endl &lt;&lt; &quot;und jetzt gib bitte die herkunft ein&quot;;
    cin &gt;&gt; eingabe;
    schwarztee.write_herkunft(eingabe);
    cout &lt;&lt; endl &lt;&lt; &quot;kommt aus &quot; &lt;&lt; schwarztee.get_herkunft() &lt;&lt; &quot; und die Sorte ist &quot; &lt;&lt; schwarztee.get_sorte();

    return 0;
}
</code></pre>
<p>tee.h</p>
<pre><code>#ifndef TEE_H_INCLUDED
#define TEE_H_INCLUDED
#include &lt;string&gt;
using namespace std;
class tee{
    string sorte;
    string herkunft;
    public:
    tee();
  string  get_sorte() const {return sorte;}  ;
   string get_herkunft() const {return herkunft;}  ;
   void write_sorte(string &amp;s);
   void write_herkunft(string &amp;h);

};

#endif // TEE_H_INCLUDED
</code></pre>
<p>tee.cpp</p>
<pre><code>#include &lt;string&gt;
#include &quot;tee.h&quot;
using namespace std;

tee::tee(){
    herkunft = &quot;&quot;;
    sorte = &quot;&quot;;
}

void tee::write_sorte(string &amp;s){
    herkunft = s;
}

void tee::write_herkunft(string &amp;h){
    sorte = h;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/322627/seltsames-vorgehen-bei-eingabe-von-string-klassen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 16 Jul 2026 10:24:44 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/322627.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 01 Jan 2014 03:07:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Seltsames vorgehen bei Eingabe von String    KLASSEN on Wed, 01 Jan 2014 03:07:59 GMT]]></title><description><![CDATA[<p>Guten Morgen und frohes neues :3<br />
Ich spiele gerade mit Klassen und Strings rum und da ist mir echt etwas negatives aufgefallen.</p>
<p>Wenn ich bei der ersten Eingabe bei nem String eine Leertaste eingebe z.B<br />
&quot;Earl Grey&quot;</p>
<p>Denkt sich mein Programm das Grey wäre für die zweite Eingabe <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /><br />
Und handelt dementsprechend auch xD</p>
<p>main.cpp</p>
<pre><code>#include &lt;iostream&gt;
#include &quot;tee.h&quot;
#include &lt;string&gt;
using namespace std;

int main()
{
    string eingabe;
    tee schwarztee;
    cout &lt;&lt; &quot;bitte gib die sorte ein &quot;;
    cin &gt;&gt; eingabe;
    schwarztee.write_sorte(eingabe);
    cout &lt;&lt; endl &lt;&lt; &quot;und jetzt gib bitte die herkunft ein&quot;;
    cin &gt;&gt; eingabe;
    schwarztee.write_herkunft(eingabe);
    cout &lt;&lt; endl &lt;&lt; &quot;kommt aus &quot; &lt;&lt; schwarztee.get_herkunft() &lt;&lt; &quot; und die Sorte ist &quot; &lt;&lt; schwarztee.get_sorte();

    return 0;
}
</code></pre>
<p>tee.h</p>
<pre><code>#ifndef TEE_H_INCLUDED
#define TEE_H_INCLUDED
#include &lt;string&gt;
using namespace std;
class tee{
    string sorte;
    string herkunft;
    public:
    tee();
  string  get_sorte() const {return sorte;}  ;
   string get_herkunft() const {return herkunft;}  ;
   void write_sorte(string &amp;s);
   void write_herkunft(string &amp;h);

};

#endif // TEE_H_INCLUDED
</code></pre>
<p>tee.cpp</p>
<pre><code>#include &lt;string&gt;
#include &quot;tee.h&quot;
using namespace std;

tee::tee(){
    herkunft = &quot;&quot;;
    sorte = &quot;&quot;;
}

void tee::write_sorte(string &amp;s){
    herkunft = s;
}

void tee::write_herkunft(string &amp;h){
    sorte = h;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2374385</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374385</guid><dc:creator><![CDATA[Plattfuss]]></dc:creator><pubDate>Wed, 01 Jan 2014 03:07:59 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames vorgehen bei Eingabe von String    KLASSEN on Wed, 01 Jan 2014 04:20:04 GMT]]></title><description><![CDATA[<p>Das ist bei C++ so.<br />
Nimm getline.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374387</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374387</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 01 Jan 2014 04:20:04 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames vorgehen bei Eingabe von String    KLASSEN on Wed, 01 Jan 2014 08:11:40 GMT]]></title><description><![CDATA[<p>Nee, im Ernst, '\n' ist dere Zeilenumbruch, nur den willste hier ausdrücken. endl hingegen haut noch ein flush dazu, das willste hier nicht ausdrücken.</p>
<p>Der Operator &lt;&lt; liest bis zum nächsten White-Space (Zeilenumbruch, Tabulator, Leerzeichen) und macht das sonst auch immer so, bei bool, int, short, float, ..., auch bei string. Alles andere wäre verwirrend. Darum nusst Du auf eine andere EInlese-Funktion zurückgreifen, wenn Du Dir mit dem Benutzer einig werden konntest, daß NUR der Zeilenumbruch (und gegebenenfalls End-Of-File) die Eingabe abschließt.</p>
<p>Den Standard-Konstruktor willste im Normalfall nicht haben: Es ist nicht so, daß Du neben den drei Teesorten &quot;Earl Grey&quot; und natürlich &quot;JLP Spezial&quot; und &quot;Mütterle&quot; und auch noch weitere sieben Sorten des Namens &quot;&quot; im Regal hast, sondern Du hast nur drei Sorten im Regal.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374388</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374388</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Wed, 01 Jan 2014 08:11:40 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames vorgehen bei Eingabe von String    KLASSEN on Wed, 01 Jan 2014 09:09:32 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Der Operator &lt;&lt; liest bis zum nächsten White-Space (Zeilenumbruch, Tabulator, Leerzeichen) und macht das sonst auch immer so, bei bool, int, short, float, ..., auch bei string. Alles andere wäre verwirrend.</p>
</blockquote>
<p>Warum? Bei der Ausgabe &gt;&gt; ist es auch nicht verwirrend, dass ein String mit Leerzeichen ausgegeben wird. Ich glaube das aktuelle verhalten von &lt;&lt; verwirt mehr Leute.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374389</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374389</guid><dc:creator><![CDATA[o90o90o90o]]></dc:creator><pubDate>Wed, 01 Jan 2014 09:09:32 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames vorgehen bei Eingabe von String    KLASSEN on Wed, 01 Jan 2014 09:33:32 GMT]]></title><description><![CDATA[<blockquote>
<p>Ich glaube das aktuelle verhalten von &lt;&lt; verwirt mehr Leute.</p>
</blockquote>
<p>Der Punkt ist aber, dass dem Extraktions-Operator keinerlei weitere Information über die Art der Extraktion übergeben werden kann, anders als bei <code>getline</code> (welche noch den Delimitter nimmt). Daher muss eine &quot;Standard-Einlese-Methode&quot; festgelegt werden. Welche wäre wohl besser als das Lesen bis zum nächsten Whitespace?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374391</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374391</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Wed, 01 Jan 2014 09:33:32 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames vorgehen bei Eingabe von String    KLASSEN on Wed, 01 Jan 2014 09:43:32 GMT]]></title><description><![CDATA[<p>Bei der Ausgabe gibt es auch ein definiertes Ende: Das vom String.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374392</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374392</guid><dc:creator><![CDATA[DirkB]]></dc:creator><pubDate>Wed, 01 Jan 2014 09:43:32 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames vorgehen bei Eingabe von String    KLASSEN on Wed, 01 Jan 2014 10:28:18 GMT]]></title><description><![CDATA[<p>o90o90o90o schrieb:</p>
<blockquote>
<p>volkard schrieb:</p>
<blockquote>
<p>Der Operator &lt;&lt; liest bis zum nächsten White-Space (Zeilenumbruch, Tabulator, Leerzeichen) und macht das sonst auch immer so, bei bool, int, short, float, ..., auch bei string. Alles andere wäre verwirrend.</p>
</blockquote>
<p>Warum? Bei der Ausgabe &gt;&gt; ist es auch nicht verwirrend, dass ein String mit Leerzeichen ausgegeben wird. Ich glaube das aktuelle verhalten von &lt;&lt; verwirt mehr Leute.</p>
</blockquote>
<p>Und was, wenn der auszugebende String einen Zeilenumbruch enthält???<br />
Klar werden dann zwei Zeilen augegeben.</p>
<p>Dann erwartest Du viewlleicht, daß ein einlesender String fortlaufend alle Zeilen einliest, bis ein doppelter Zeilenumbruch gelesen wurde? Geht, aber wenn Datein auch Leerzeilen haben können dürfen sollen, wirds da ganz schwierig zu durchschauen.</p>
<p>Man könnte es klären, wenn string allenfalls eine ganze Datei lesen würde und jedes Verhackstückeln von Tokenizern, Splittern und Parsern zu geschehen hätte. Ich fürchte, dann hätten wir deswegen mehr Anfragen in diesem Forum. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374394</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374394</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Wed, 01 Jan 2014 10:28:18 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames vorgehen bei Eingabe von String    KLASSEN on Wed, 01 Jan 2014 10:49:29 GMT]]></title><description><![CDATA[<p>Ich glaube es gibt keinen der mit einer einfachen Console (nicht Editor) arbeitet und erwartet, dass bei einer String Eingabe nicht genau beim drücken von Enter diese fertig ist, außer, wenn er mit C++ arbeitet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374395</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374395</guid><dc:creator><![CDATA[o90o90o90o]]></dc:creator><pubDate>Wed, 01 Jan 2014 10:49:29 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames vorgehen bei Eingabe von String    KLASSEN on Wed, 01 Jan 2014 11:27:58 GMT]]></title><description><![CDATA[<p>o90o90o90o schrieb:</p>
<blockquote>
<p>Ich glaube es gibt keinen der mit einer einfachen Console (nicht Editor) arbeitet und erwartet, dass bei einer String Eingabe nicht genau beim drücken von Enter diese fertig ist, außer, wenn er mit C++ arbeitet.</p>
</blockquote>
<p>Wenn ist Deinem Buch stand, daß ein String eine Textzeile (insbesondere Eingabezeile) ist, und Du das immer noch glaubst, wurdest Du leider gewolft. :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374397</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374397</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Wed, 01 Jan 2014 11:27:58 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames vorgehen bei Eingabe von String    KLASSEN on Wed, 01 Jan 2014 14:36:27 GMT]]></title><description><![CDATA[<p>In deinem Buch stand wohl, dass ein String beim Leerzeichen endet. Hast schon überzeugende Argumente. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374424</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374424</guid><dc:creator><![CDATA[o90o90o90o]]></dc:creator><pubDate>Wed, 01 Jan 2014 14:36:27 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames vorgehen bei Eingabe von String    KLASSEN on Wed, 01 Jan 2014 16:26:14 GMT]]></title><description><![CDATA[<p>Wie vorgeschlagen hab ich es mit getline gelößt <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>
<pre><code>#include &lt;iostream&gt;
#include &quot;tee.h&quot;
#include &lt;string&gt;
using namespace std;

int main()
{
    string eingabe;
    tee schwarztee;
    cout &lt;&lt; &quot;bitte gib die sorte ein &quot;;
    getline(cin,eingabe);
    schwarztee.write_sorte(eingabe);
    cout &lt;&lt; endl &lt;&lt; &quot;und jetzt gib bitte die herkunft ein&quot;;
    getline(cin,eingabe);
    schwarztee.write_herkunft(eingabe);
    cout &lt;&lt; endl &lt;&lt; &quot;kommt aus &quot; &lt;&lt; schwarztee.get_herkunft() &lt;&lt; &quot; und die Sorte ist &quot; &lt;&lt; schwarztee.get_sorte();

    return 0;
}
</code></pre>
<p>Wenn ich ehrlich bin hab ich den Grund glaube ich nicht zu 100% verstanden.<br />
Ich versuchs mal zu erklären und ihr sagt mir dann bitte ob ich es richtig verstanden habe :p</p>
<p>Also bei cin &gt;&gt; scheinbar wegen dem '&gt;&gt;' wird der Text nur eingelesen bis zur nächsten Leertaste, weil Magie halt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374441</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374441</guid><dc:creator><![CDATA[Plattfuss]]></dc:creator><pubDate>Wed, 01 Jan 2014 16:26:14 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames vorgehen bei Eingabe von String    KLASSEN on Wed, 01 Jan 2014 16:41:48 GMT]]></title><description><![CDATA[<p>Plattfuss schrieb:</p>
<blockquote>
<p>Also bei cin &gt;&gt; scheinbar wegen dem '&gt;&gt;' wird der Text nur eingelesen bis zur nächsten Leertaste, weil Magie halt.</p>
</blockquote>
<p>operator&gt;&gt; ließt solange ein, bis er auf ein Whitespace (Leerzeichen, Tab, Enter, usw) stößt, weil genau das der Sinn von &gt;&gt; ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374444</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374444</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Wed, 01 Jan 2014 16:41:48 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames vorgehen bei Eingabe von String    KLASSEN on Wed, 01 Jan 2014 18:19:13 GMT]]></title><description><![CDATA[<p>o90o90o90o schrieb:</p>
<blockquote>
<p>volkard schrieb:</p>
<blockquote>
<p>Der Operator &lt;&lt; liest bis zum nächsten White-Space (Zeilenumbruch, Tabulator, Leerzeichen) und macht das sonst auch immer so, bei bool, int, short, float, ..., auch bei string. Alles andere wäre verwirrend.</p>
</blockquote>
<p>Warum? Bei der Ausgabe &gt;&gt; ist es auch nicht verwirrend, dass ein String mit Leerzeichen ausgegeben wird. Ich glaube das aktuelle verhalten von &lt;&lt; verwirt mehr Leute.</p>
</blockquote>
<p>Nach der Logik müsste der extraction Operator bei Strings alles bis &quot;EOF&quot; lesen. Da man mit dem insertion Operator auch wunderbar Newlines mit ausgeben kann.<br />
Das wäre aber reichlich beknackt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374460</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374460</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 01 Jan 2014 18:19:13 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames vorgehen bei Eingabe von String    KLASSEN on Wed, 01 Jan 2014 20:14:27 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>o90o90o90o schrieb:</p>
<blockquote>
<p>volkard schrieb:</p>
<blockquote>
<p>Der Operator &lt;&lt; liest bis zum nächsten White-Space (Zeilenumbruch, Tabulator, Leerzeichen) und macht das sonst auch immer so, bei bool, int, short, float, ..., auch bei string. Alles andere wäre verwirrend.</p>
</blockquote>
<p>Warum? Bei der Ausgabe &gt;&gt; ist es auch nicht verwirrend, dass ein String mit Leerzeichen ausgegeben wird. Ich glaube das aktuelle verhalten von &lt;&lt; verwirt mehr Leute.</p>
</blockquote>
<p>Nach der Logik müsste der extraction Operator bei Strings alles bis &quot;EOF&quot; lesen. Da man mit dem insertion Operator auch wunderbar Newlines mit ausgeben kann.<br />
Das wäre aber reichlich beknackt.</p>
</blockquote>
<p>o90o90o90o schrieb:</p>
<blockquote>
<p>Ich glaube es gibt keinen der mit einer einfachen Console (nicht Editor) arbeitet und erwartet, dass bei einer String Eingabe nicht genau beim drücken von Enter diese fertig ist, außer, wenn er mit C++ arbeitet.</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/2374477</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374477</guid><dc:creator><![CDATA[o90o90o90o]]></dc:creator><pubDate>Wed, 01 Jan 2014 20:14:27 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames vorgehen bei Eingabe von String    KLASSEN on Thu, 02 Jan 2014 00:08:08 GMT]]></title><description><![CDATA[<p>Ich meine nur dein Argument &quot;&lt;&lt; gibt ja auch Whitespaces aus, also sollte &gt;&gt; sie auch mit einlesen&quot; ist etwas komisch.<br />
Dann dann auch &quot;&lt;&lt; gibt ja auch Newlines aus, also sollte &gt;&gt; sie auch mit einlesen&quot; gelten müsste.</p>
<p>Du kannst nicht eines dieser beiden Argumente bringen und das andere ablehnen, die Logik beider ist exakt die selbe.</p>
<p>o90o90o90o schrieb:</p>
<blockquote>
<p>Ich glaube es gibt keinen der mit einer einfachen Console (nicht Editor) arbeitet und erwartet, dass bei einer String Eingabe nicht genau beim drücken von Enter diese fertig ist, außer, wenn er mit C++ arbeitet.</p>
</blockquote>
<p>Das mag wohl sein, hat aber wie gesagt mit deinem &quot;&lt;&lt; gibt auch Whitespaces aus&quot; Argument nichts zu tun.</p>
<p>Und nicht alles was sich Anfänger im ersten Moment erwarten ist auch die optimale Lösung.</p>
<p>Die &quot;Whitespace = Stop&quot; Variante hat z.B. den Vorteil dass bei &quot;&gt;&gt;&quot; alle vordefinierten Operator gleich arbeiten, unabhängig vom Datentyp. Für alle gilt &quot;Whitespace = Stop&quot;.</p>
<p>Würde &quot;&gt;&gt;&quot; bei Strings dagegen bis zum Zeilenende lesen wäre diese Symmetrie/Gemeinsamkeit zerstört. Und es gäbe keine andere Symmetrie/Gemeinsamkeit die man dadurch gewinnt. Weil sich ja wie gesagt &quot;&gt;&gt;&quot; mit Strings dadurch immer noch nicht gleich verhält wie &quot;&lt;&lt;&quot; mit Strings.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374515</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374515</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 02 Jan 2014 00:08:08 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames vorgehen bei Eingabe von String    KLASSEN on Thu, 02 Jan 2014 07:29:37 GMT]]></title><description><![CDATA[<p>Eigentlich macht &quot;Whitespace = Stop&quot; auf der Console auch bei den anderen Datentypen keinen Sinn. Consoleneingabe endet einfach bei Enter und nicht bei Space. Das Problem dürfte wohl sein, dass man so tut, also ob die Console eine Datei wäre.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374523</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374523</guid><dc:creator><![CDATA[o90o90o90o]]></dc:creator><pubDate>Thu, 02 Jan 2014 07:29:37 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames vorgehen bei Eingabe von String    KLASSEN on Thu, 02 Jan 2014 07:48:12 GMT]]></title><description><![CDATA[<p>Und es würde noch weniger Sinn machen es auf der Konsole anders zu handhaben als in Files.<br />
Überleg dir mal wie verwirrend DAS wäre.</p>
<p>Aber ich vermute dass es dir gar nicht mehr um die Sache geht, sondern einfach nur darum Recht zu haben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374525</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374525</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 02 Jan 2014 07:48:12 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames vorgehen bei Eingabe von String    KLASSEN on Thu, 02 Jan 2014 11:23:15 GMT]]></title><description><![CDATA[<p>@o90o90o90o: Es ist ja gerade der Sinn, daß sich Tastatureingaben genauso verhalten wie Dateien, damit man einfach in der Konsole die Ein- und Ausgabe umleiten kann, z.B.</p>
<pre><code>program &lt;input.txt &gt;output.txt 2&gt;error.txt
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2374566</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374566</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Thu, 02 Jan 2014 11:23:15 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames vorgehen bei Eingabe von String    KLASSEN on Thu, 02 Jan 2014 11:33:39 GMT]]></title><description><![CDATA[<p>o90o90o90o schrieb:</p>
<blockquote>
<p>Eigentlich macht &quot;Whitespace = Stop&quot; auf der Console auch bei den anderen Datentypen keinen Sinn. Consoleneingabe endet einfach bei Enter und nicht bei Space.</p>
</blockquote>
<pre><code class="language-cpp">double x, y, z;
std::cout &lt;&lt; &quot;Geben Sie drei Zahlen ein: &quot; &lt;&lt; std::flush;
std::cin &gt;&gt; x &gt;&gt; y &gt;&gt; z;
</code></pre>
<p>...und jetzt versuchen wir das mal, wenn wir nur Zeilen einlesen können. Vor allem, wenn du jetzt nicht völlig Amok laufen und std::istringstream ein anderes Verhalten als std::istream geben willst.</p>
<p>o90o90o90o schrieb:</p>
<blockquote>
<p>Das Problem dürfte wohl sein, dass man so tut, also ob die Console eine Datei wäre.</p>
</blockquote>
<p>Das wird damit zusammenhängen, dass die Konsole eine Datei ist.</p>
<p>Das Problem hier besteht allein darin, dass dir nicht klar ist, dass operator&gt;&gt; keine rohe, sondern eine formatierte Einlesefunktion ist -- ein Konzept, das in den meisten Sprachen gleich oder ähnlich existiert. Wenn du eine Zeile haben willst, gibt es std::getline.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374568</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374568</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Thu, 02 Jan 2014 11:33:39 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames vorgehen bei Eingabe von String    KLASSEN on Thu, 02 Jan 2014 16:13:03 GMT]]></title><description><![CDATA[<p>seldon schrieb:</p>
<blockquote>
<pre><code class="language-cpp">double x, y, z;
std::cout &lt;&lt; &quot;Geben Sie drei Zahlen ein: &quot; &lt;&lt; std::flush;
std::cin &gt;&gt; x &gt;&gt; y &gt;&gt; z;
</code></pre>
<p>...und jetzt versuchen wir das mal, wenn wir nur Zeilen einlesen können. Vor allem, wenn du jetzt nicht völlig Amok laufen und std::istringstream ein anderes Verhalten als std::istream geben willst.</p>
</blockquote>
<p>Nein, ich will für consolen Eingabe einen vernünftigen stream der nichts mit std::istream zu tun hat.</p>
<p>Funktioniert ja sowieso nicht wie ein file stream (siehe seek).</p>
<pre><code>int main()
{
	int x;
	std::cout &lt;&lt; &quot;Verkaufspreis ihres Autos in Euro: &quot; &lt;&lt; std::flush;
	std::cin &gt;&gt; x;
	if ( !std::cin.fail() )
		std::cout &lt;&lt; &quot;Ihr Auto wurde fuer &quot; &lt;&lt; x &lt;&lt; &quot; Euro verkauft. Glueckwunsch.\n&quot;;

	std::cin.seekg(0, std::cin.beg);
	int xNochmal = 0;
	std::cin &gt;&gt; xNochmal;
	std::cout &lt;&lt; &quot;Nochmal x: &quot; &lt;&lt; xNochmal;
}
</code></pre>
<blockquote>
<p>Verkaufspreis ihres Autos in Euro: 12 000<br />
Ihr Auto wurde fuer 12 Euro verkauft. Glueckwunsch.<br />
Nochmal x: 0</p>
</blockquote>
<p>Und vonwegen string und int verwenden die gleichen Trennzeichen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<blockquote>
<p>Verkaufspreis ihres Autos in Euro: 123sowasDerVerwendetJaNichtMalEinheitlichSpac<br />
e...<br />
Ihr Auto wurde fuer 123 Euro verkauft. Glueckwunsch.<br />
Nochmal x: 0</p>
</blockquote>
<p>Damit ist volkards Argument ja noch schlechter als gewolftes Zeugs.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374637</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374637</guid><dc:creator><![CDATA[o90o90o90o]]></dc:creator><pubDate>Thu, 02 Jan 2014 16:13:03 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames vorgehen bei Eingabe von String    KLASSEN on Thu, 02 Jan 2014 16:24:40 GMT]]></title><description><![CDATA[<p>o90o90o90o schrieb:</p>
<blockquote>
<p>seldon schrieb:</p>
<blockquote>
<pre><code class="language-cpp">double x, y, z;
std::cout &lt;&lt; &quot;Geben Sie drei Zahlen ein: &quot; &lt;&lt; std::flush;
std::cin &gt;&gt; x &gt;&gt; y &gt;&gt; z;
</code></pre>
<p>...und jetzt versuchen wir das mal, wenn wir nur Zeilen einlesen können. Vor allem, wenn du jetzt nicht völlig Amok laufen und std::istringstream ein anderes Verhalten als std::istream geben willst.</p>
</blockquote>
<p>Nein, ich will für consolen Eingabe einen vernünftigen stream der nichts mit std::istream zu tun hat.</p>
</blockquote>
<p>Den wirst du nicht kriegen. Für den C++ Standard gibt es so etwas wie Konsolen nicht. cin ist einfach nur irgendein Inputstream (deswegen std::istream = keine genauere Spezifiezierung), der standardmäßig fürs Einlesen verwendet wird.</p>
<blockquote>
<p>Und vonwegen string und int verwenden die gleichen Trennzeichen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<blockquote>
<p>Verkaufspreis ihres Autos in Euro: 123sowasDerVerwendetJaNichtMalEinheitlichSpac<br />
e...<br />
Ihr Auto wurde fuer 123 Euro verkauft. Glueckwunsch.<br />
Nochmal x: 0</p>
</blockquote>
<p>Damit ist volkards Argument ja noch schlechter als gewolftes Zeugs.</p>
</blockquote>
<p>Was für eine Zahl sollte er deiner Meinung nach extrahieren?<br />
Es ist absolut in Ordnung, wenn er bei dem Buchstaben abbricht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374638</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374638</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Thu, 02 Jan 2014 16:24:40 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames vorgehen bei Eingabe von String    KLASSEN on Thu, 02 Jan 2014 17:14:03 GMT]]></title><description><![CDATA[<p>Nathan schrieb:</p>
<blockquote>
<blockquote>
<p>Und vonwegen string und int verwenden die gleichen Trennzeichen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<blockquote>
<p>Verkaufspreis ihres Autos in Euro: 123sowasDerVerwendetJaNichtMalEinheitlichSpac<br />
e...<br />
Ihr Auto wurde fuer 123 Euro verkauft. Glueckwunsch.<br />
Nochmal x: 0</p>
</blockquote>
<p>Damit ist volkards Argument ja noch schlechter als gewolftes Zeugs.</p>
</blockquote>
<p>Was für eine Zahl sollte er deiner Meinung nach extrahieren?<br />
Es ist absolut in Ordnung, wenn er bei dem Buchstaben abbricht.</p>
</blockquote>
<p>Keine Zahl. Das fail bit muss gesetzt sein.<br />
Volkards Aussage war:</p>
<p>volkard schrieb:</p>
<blockquote>
<p>Der Operator &lt;&lt; liest bis zum nächsten White-Space (Zeilenumbruch, Tabulator, Leerzeichen) und macht das sonst auch immer so, bei bool, int, short, float, ..., auch bei string.</p>
</blockquote>
<p>Damit ist sein ganzes Argument, dass es sich bei int, float ... string gleich verhält sinnlos. Dann müsste er bei string ja auch schon beim ersten Buchstaben abbrechen, wenn es so sein sollte wie bei int.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374642</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374642</guid><dc:creator><![CDATA[o90o90o90o]]></dc:creator><pubDate>Thu, 02 Jan 2014 17:14:03 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames vorgehen bei Eingabe von String    KLASSEN on Thu, 02 Jan 2014 17:25:29 GMT]]></title><description><![CDATA[<p>@o90o90o90o<br />
Bist du dumm oder sowas?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374646</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374646</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 02 Jan 2014 17:25:29 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames vorgehen bei Eingabe von String    KLASSEN on Thu, 02 Jan 2014 18:18:02 GMT]]></title><description><![CDATA[<p>Nicht so dumm wie du.<br />
Erklär doch mal diese Ausgabe mit dem angeblich einheitlichen Whitespace Separator.</p>
<pre><code>int main()
{
	int x;
	std::cout &lt;&lt; &quot;Verkaufspreis ihres Autos in Euro: &quot; &lt;&lt; std::flush;
	std::cin &gt;&gt; x;
	if ( !std::cin.fail() )
		std::cout &lt;&lt; &quot;Ihr Auto wurde fuer &quot; &lt;&lt; x &lt;&lt; &quot; Euro verkauft. Glueckwunsch.\n&quot;;

	std::string str;
	std::cin &gt;&gt; str;
	std::cout &lt;&lt; &quot;string: &quot; &lt;&lt; str &lt;&lt; &quot;\n&quot;;

	int y = 0;
	std::cin &gt;&gt; y;
	std::cout &lt;&lt; &quot;y: &quot; &lt;&lt; y &lt;&lt; &quot;\n&quot;;;

}
</code></pre>
<blockquote>
<p>Verkaufspreis ihres Autos in Euro: 123katzekatze678 99<br />
Ihr Auto wurde fuer 123 Euro verkauft. Glueckwunsch.<br />
string: katzekatze678<br />
y: 99</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/2374657</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374657</guid><dc:creator><![CDATA[o90o90o90o]]></dc:creator><pubDate>Thu, 02 Jan 2014 18:18:02 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames vorgehen bei Eingabe von String    KLASSEN on Thu, 02 Jan 2014 18:28:13 GMT]]></title><description><![CDATA[<p>o90o90o90o schrieb:</p>
<blockquote>
<p>Nicht so dumm wie du.<br />
Erklär doch mal diese Ausgabe mit dem angeblich einheitlichen Whitespace Separator.</p>
</blockquote>
<p>Da gibts nichts zu erklären, weil das genau dem Konzept des einheitlichen Whitespace Seperator entspricht.<br />
Wie hättest du sie den gerne?<br />
---<br />
Wieso diskutier ich überhaupt mit einem, der cout flusht bevor er einliest?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374661</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374661</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Thu, 02 Jan 2014 18:28:13 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames vorgehen bei Eingabe von String    KLASSEN on Thu, 02 Jan 2014 18:43:06 GMT]]></title><description><![CDATA[<p>o90o90o90o schrieb:</p>
<blockquote>
<p>Nicht so dumm wie du.<br />
Erklär doch mal diese Ausgabe mit dem angeblich einheitlichen Whitespace Separator.</p>
<pre><code>int main()
{
	int x;
	std::cout &lt;&lt; &quot;Verkaufspreis ihres Autos in Euro: &quot; &lt;&lt; std::flush;
	std::cin &gt;&gt; x;
	if ( !std::cin.fail() )
		std::cout &lt;&lt; &quot;Ihr Auto wurde fuer &quot; &lt;&lt; x &lt;&lt; &quot; Euro verkauft. Glueckwunsch.\n&quot;;
		

	std::string str;
	std::cin &gt;&gt; str;
	std::cout &lt;&lt; &quot;string: &quot; &lt;&lt; str &lt;&lt; &quot;\n&quot;;
	
	int y = 0;
	std::cin &gt;&gt; y;
	std::cout &lt;&lt; &quot;y: &quot; &lt;&lt; y &lt;&lt; &quot;\n&quot;;;

}
</code></pre>
<blockquote>
<p>Verkaufspreis ihres Autos in Euro: 123katzekatze678 99<br />
Ihr Auto wurde fuer 123 Euro verkauft. Glueckwunsch.<br />
string: katzekatze678<br />
y: 99</p>
</blockquote>
</blockquote>
<p>Was habt ihr für Probleme hier <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>1. Du willst einen <code>int</code> und du gibst ein <code>123katzekatze678 99&lt;Enter&gt;</code> . Der <code>extraction operator</code> findet <code>1</code> , er findet <code>2</code> , er findet <code>3</code> . Supi er hat schon drei <code>int</code> gefunden, die er zusammensetzen kann. Nun findet er ein <code>k</code> , shit das ist kein <code>int</code> , also Fehler.<br />
Ergebnis: Ein <code>int 123</code> und <code>katzekatze678 99&lt;Enter&gt;</code> bleibt im Puffer liegen.</p>
<p>2. Du willst einen <code>string</code> lesen. Ein string besteht aus Zeichen. Also kannst du keine falschen Zeichen eingeben (keinen Fehler produzieren), also kann nur ein Whitespace den Einlesevorgang beenden. Der <code>extraction operator</code> findet also Zeichen für Zeichen. Nach dem letzen Zeichen <code>8</code> kommt ein Leerzeichen (=Whitespace). Also der Einlesevorgang ist beendet.<br />
Ergebis. Einen <code>string katzekatze678</code> und <code>&lt;Leerzeichen&gt;99&lt;Enter&gt;</code> bleibt im Puffer zurück.</p>
<p>3. Du willst einen <code>int</code> einlesen. Der <code>extraction operator</code> ist clever und überließt (lesen + verwerfen) Whitespaces, die am Anfang stehen (führende Whitespaces). Somit gibt es im Puffer nun nur noch <code>99&lt;Enter&gt;</code> . Die <code>99</code> wird gelesen, das <code>Enter</code> bricht den Einlesevorgang ab.<br />
Ergebnis: Ein <code>int 99</code> und der Puffer ist nun leer!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374663</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374663</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Thu, 02 Jan 2014 18:43:06 GMT</pubDate></item></channel></rss>