<?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[cin.get()&#x2F;cin.putback() &amp;lt;-- Was machen die]]></title><description><![CDATA[<pre><code class="language-cpp">// istream putback
#include &lt;iostream&gt;
using namespace std;

int main () {
  char c;
  int n;
  char str[256];

  cout &lt;&lt; &quot;Enter a number or a word: &quot;;
  c = cin.get();

  if ( (c &gt;= '0') &amp;&amp; (c &lt;= '9') )
  {
    cin.putback (c);
    cin &gt;&gt; n;
    cout &lt;&lt; &quot;You have entered number &quot; &lt;&lt; n &lt;&lt; endl;
  }
  else
  {
    cin.putback (c);
    cin &gt;&gt; str;
    cout &lt;&lt; &quot; You have entered word &quot; &lt;&lt; str &lt;&lt; endl;
  }
  system(&quot;PAUSE&quot;);
  return 0;
}
</code></pre>
<p>-Was machen die Befehle cin.putback(c) und cin.get(c) [bei cin.get habe ich die vermutung das das sowas ist wie std::cin^^ nur irgendwie einen Unterschied beim einlesen von den Daten macht, nur welcher das ist weiß ich nicht]<br />
-Wieso muss ich beim ausführen des Programms bei der stelle &quot;cin &gt;&gt; str&quot; bzw &quot;cin &gt;&gt; n&quot; nichts über die Tastatur einlesen...(hängt das mit &quot;cin.putback()&quot; zusammen??)<br />
-desweiteren verstehe ich (leider) auchnicht &quot;if ( (c &gt;= '0') &amp;&amp; (c &lt;= '9') )&quot; wenn ich nämlich als eingabe '8' nehme, kommt immernoch... &quot;you have entered number&quot;...</p>
<p>habe mich schon länger gefragt was diese beiden Befehle machen, bin aber zu keinem Ergebnis gekommen, auch die Site <a href="http://www.cplusplus.com/reference/iostream/istream/putback.html" rel="nofollow">http://www.cplusplus.com/reference/iostream/istream/putback.html</a> hat mir nicht weiter geholfen (daher habe ich auch das Beispiel)</p>
<p>Hoffe ihr könnt mir da weiter helfen...</p>
<p>Mfg Jud4s</p>
<p>PS: Wär schon toll wenn ihr mich auf einen Link verweisen könnt der mir Aufschluss gibt..</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/207595/cin-get-cin-putback-lt-was-machen-die</link><generator>RSS for Node</generator><lastBuildDate>Sun, 11 Oct 2026 07:01:15 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/207595.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 09 Mar 2008 17:27:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to cin.get()&#x2F;cin.putback() &amp;lt;-- Was machen die on Sun, 09 Mar 2008 17:34:10 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">// istream putback
#include &lt;iostream&gt;
using namespace std;

int main () {
  char c;
  int n;
  char str[256];

  cout &lt;&lt; &quot;Enter a number or a word: &quot;;
  c = cin.get();

  if ( (c &gt;= '0') &amp;&amp; (c &lt;= '9') )
  {
    cin.putback (c);
    cin &gt;&gt; n;
    cout &lt;&lt; &quot;You have entered number &quot; &lt;&lt; n &lt;&lt; endl;
  }
  else
  {
    cin.putback (c);
    cin &gt;&gt; str;
    cout &lt;&lt; &quot; You have entered word &quot; &lt;&lt; str &lt;&lt; endl;
  }
  system(&quot;PAUSE&quot;);
  return 0;
}
</code></pre>
<p>-Was machen die Befehle cin.putback(c) und cin.get(c) [bei cin.get habe ich die vermutung das das sowas ist wie std::cin^^ nur irgendwie einen Unterschied beim einlesen von den Daten macht, nur welcher das ist weiß ich nicht]<br />
-Wieso muss ich beim ausführen des Programms bei der stelle &quot;cin &gt;&gt; str&quot; bzw &quot;cin &gt;&gt; n&quot; nichts über die Tastatur einlesen...(hängt das mit &quot;cin.putback()&quot; zusammen??)<br />
-desweiteren verstehe ich (leider) auchnicht &quot;if ( (c &gt;= '0') &amp;&amp; (c &lt;= '9') )&quot; wenn ich nämlich als eingabe '8' nehme, kommt immernoch... &quot;you have entered number&quot;...</p>
<p>habe mich schon länger gefragt was diese beiden Befehle machen, bin aber zu keinem Ergebnis gekommen, auch die Site <a href="http://www.cplusplus.com/reference/iostream/istream/putback.html" rel="nofollow">http://www.cplusplus.com/reference/iostream/istream/putback.html</a> hat mir nicht weiter geholfen (daher habe ich auch das Beispiel)</p>
<p>Hoffe ihr könnt mir da weiter helfen...</p>
<p>Mfg Jud4s</p>
<p>PS: Wär schon toll wenn ihr mich auf einen Link verweisen könnt der mir Aufschluss gibt..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1471065</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471065</guid><dc:creator><![CDATA[Jud4s]]></dc:creator><pubDate>Sun, 09 Mar 2008 17:34:10 GMT</pubDate></item><item><title><![CDATA[Reply to cin.get()&#x2F;cin.putback() &amp;lt;-- Was machen die on Sun, 09 Mar 2008 17:39:50 GMT]]></title><description><![CDATA[<p><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="😉"
    /> Netter Code:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

int main () 
{
    int number;
    char string[256];

    std::cout &lt;&lt; &quot;Enter a number or a word: &quot;;
    const char first_char(std::cin.get()); // nächstes Zeichen aus dem Eingabestream (std::cin) einlesen.

    std::cin.putback(first_char); // zeichen wieder in den Eingabestream zurückschieben

    if ((first_char &gt;= '0') &amp;&amp; (first_char &lt;= '9')) // gucken ob c eine Zahl ist ('0' ... '9')
    {
        std::cin &gt;&gt; number; // es ist eine nummer =&gt; integer einlesen
        std::cout &lt;&lt; &quot;You have entered number &quot; &lt;&lt; number &lt;&lt; std::endl;
    }
    else
    {
        std::cin &gt;&gt; string; // es ist keine nummer =&gt; string einlesen
        std::cout &lt;&lt; &quot;You have entered word &quot; &lt;&lt; string &lt;&lt; std::endl;
    }
}
</code></pre>
<blockquote>
<p>Was machen die Befehle cin.putback(c) und cin.get(c)</p>
</blockquote>
<p>- std::istream::get =&gt; Hole das erste Zeichen aus dem Eingabestream<br />
- std::istream::putback =&gt; Packe das Zeichen an den Anfang des Eingabestreams</p>
<blockquote>
<p>-Wieso muss ich beim ausführen des Programms bei der stelle &quot;cin &gt;&gt; str&quot; bzw &quot;cin &gt;&gt; n&quot; nichts über die Tastatur einlesen...</p>
</blockquote>
<p>Weil es sich bei std::istream um einenen gebufferten Eingabestream handelt. D.h. solange sich was im Streambuffer befindet, wird daraus gelesen <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="😉"
    /> In deinem Fall steht da in jedem Fall was drin, da du per std::cin.putback ein Zeichen reingeschoben hast.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1471072</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471072</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Sun, 09 Mar 2008 17:39:50 GMT</pubDate></item><item><title><![CDATA[Reply to cin.get()&#x2F;cin.putback() &amp;lt;-- Was machen die on Sun, 09 Mar 2008 17:48:40 GMT]]></title><description><![CDATA[<blockquote>
<p>- std::istream::get =&gt; Hole das erste Zeichen aus dem Eingabestream<br />
- std::istream::putback =&gt; Packe das Zeichen an den Anfang des Eingabestreams</p>
</blockquote>
<p>heisst das dann nicht das man dann immer das selbe Zeichen einliest (wenn man z.b. 1+1 schreibt, wird ja die 1 ausgelesen..... dann wieder eingelesen...).<br />
Und wenn man jezz kein putback befehl nimmt... aber erneut einen get.... wird dann das alte Zeichen das eingelesen wurde 'zerstört'?? das man quasie die Zeichenkette 1+1 als '1' - '+' - '1' einlesen und auswerten kann??</p>
<p>PS: Könnted ihr mir vll ein Anfängerbuch für Cpp empfehlen?? Ein gutes wenn möglich <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="😉"
    /> ich, habe bereits &quot;Die Programmiersprache C++&quot; von Bjarne Stroustrup, merke allerdings das es für mich Wochen dauert bis ich ein Kapitel 'verdaut' habe.....(ich habe bereits im Forumsverzeichnis nachgeguckt, dort aber viele Bücher gesehen und nun unsicher welches davon gut bzw nicht so gut ist... z.b. das Buch C++ für Dummies ((was ich auch habe)) wurde in einem anderen Forum als schlecht bis mieserabel bezeichnet, da man dort angeblich nur auf die C-Teile von C++ eingeht....</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1471078</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471078</guid><dc:creator><![CDATA[Jud4s]]></dc:creator><pubDate>Sun, 09 Mar 2008 17:48:40 GMT</pubDate></item><item><title><![CDATA[Reply to cin.get()&#x2F;cin.putback() &amp;lt;-- Was machen die on Sun, 09 Mar 2008 17:52:33 GMT]]></title><description><![CDATA[<p>Jud4s schrieb:</p>
<blockquote>
<p>Und wenn man jezz kein putback befehl nimmt... aber erneut einen get.... wird dann das alte Zeichen das eingelesen wurde 'zerstört'??</p>
</blockquote>
<p>Nein. Das bis dahin aktuelle Zeichen kommt an die zweite Position des Streams, so daß du es beim übernächsten mal auslesen kannst.</p>
<p>Jud4s schrieb:</p>
<blockquote>
<p>PS: Könnted ihr mir vll ein Anfängerbuch für Cpp empfehlen?? Ein gutes wenn möglich <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="😉"
    /> ich, habe bereits &quot;Die Programmiersprache C++&quot; von Bjarne Stroustrup, merke allerdings das es für mich Wochen dauert bis ich ein Kapitel 'verdaut' habe.</p>
</blockquote>
<p>Der Stroustrup ist eine harte Nuß.<br />
Ich würde dir &quot;C++: Eine Einführung&quot; von Ulrich Breymann, Hanser Verlag, empfehlen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1471083</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471083</guid><dc:creator><![CDATA[funky cat]]></dc:creator><pubDate>Sun, 09 Mar 2008 17:52:33 GMT</pubDate></item><item><title><![CDATA[Reply to cin.get()&#x2F;cin.putback() &amp;lt;-- Was machen die on Sun, 09 Mar 2008 17:52:48 GMT]]></title><description><![CDATA[<p>Es heißt einfach nur, das ein Zeichen durch putback an den Anfang des Streambuffers gesetzt wird. Beim nächsten Einlesen wird dann dieses mit eingelesen und somit aus dem Streambuffer wieder entfernt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1471084</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471084</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Sun, 09 Mar 2008 17:52:48 GMT</pubDate></item><item><title><![CDATA[Reply to cin.get()&#x2F;cin.putback() &amp;lt;-- Was machen die on Sun, 09 Mar 2008 18:00:35 GMT]]></title><description><![CDATA[<blockquote>
<p>Nein. Das bis dahin aktuelle Zeichen kommt an die zweite Position des Streams, so daß du es beim übernächsten mal auslesen kannst.</p>
</blockquote>
<p>heisst das dann bei '1' '+' wird dann beim putbackbefehl '+' '1' eingelesen????</p>
<p>Meintest du <a href="http://www.amazon.de/C%2B%2B-Eine-Einf%C3%BChrung-Ulrich-Breymann/dp/3446192336/ref=sr_1_3?ie=UTF8&amp;s=books&amp;qid=1205085597&amp;sr=1-3" rel="nofollow">http://www.amazon.de/C%2B%2B-Eine-Einf%C3%BChrung-Ulrich-Breymann/dp/3446192336/ref=sr_1_3?ie=UTF8&amp;s=books&amp;qid=1205085597&amp;sr=1-3</a>???</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1471085</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471085</guid><dc:creator><![CDATA[Jud4s]]></dc:creator><pubDate>Sun, 09 Mar 2008 18:00:35 GMT</pubDate></item><item><title><![CDATA[Reply to cin.get()&#x2F;cin.putback() &amp;lt;-- Was machen die on Sun, 09 Mar 2008 17:59:24 GMT]]></title><description><![CDATA[<p>Pass auf. Im Streambuffer steht jetzt (wahrscheinlich weil du es eingegeben hast <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="😉"
    /> ) z.B. &quot;1+1=2&quot;. Durch das get, bekommst du das erste Zeichen =&gt; Im Buffer steht noch &quot;+1=2&quot;. Mit putback kannst du jetzt ein Zeichen an den Anfang deines Streambuffers setzen. Wenn du z.B. std::cin.putback('9'); dann ausführen würdest, stünde im Streambuffer &quot;9+1=2&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1471088</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471088</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Sun, 09 Mar 2008 17:59:24 GMT</pubDate></item><item><title><![CDATA[Reply to cin.get()&#x2F;cin.putback() &amp;lt;-- Was machen die on Sun, 09 Mar 2008 18:01:30 GMT]]></title><description><![CDATA[<p>Mal angenommen im Stream stehen die Zeichen '1','2' und '3'<br />
Wenn du ein Zeichen liest (die 3), dann Stehen im Stream nur noch die '1' und die '2'.<br />
Rufst du nun putback ('4') auf, dann stehen im Stream: '1','2','4'.<br />
Der nächsten cin.get()-Aufruf würde die '4' lesen, der übernächste die '2' und der letzte die '1'.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1471090</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471090</guid><dc:creator><![CDATA[funky cat]]></dc:creator><pubDate>Sun, 09 Mar 2008 18:01:30 GMT</pubDate></item><item><title><![CDATA[Reply to cin.get()&#x2F;cin.putback() &amp;lt;-- Was machen die on Sun, 09 Mar 2008 18:02:42 GMT]]></title><description><![CDATA[<p>keyy... ist interressant....</p>
<p>gibt es Vorgaben was ich in was setzen darf?? Gibt der Compiler z.b. ein Fehler aus wenn ich in eine *char eine '9' einlesen will, oder in eine int ein 'c'??? Oder wird das dann zu einem laufzeitfehler??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1471091</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471091</guid><dc:creator><![CDATA[Jud4s]]></dc:creator><pubDate>Sun, 09 Mar 2008 18:02:42 GMT</pubDate></item><item><title><![CDATA[Reply to cin.get()&#x2F;cin.putback() &amp;lt;-- Was machen die on Sun, 09 Mar 2008 18:03:13 GMT]]></title><description><![CDATA[<p>Jud4s schrieb:</p>
<blockquote>
<p>Meintest du <a href="http://www.amazon.de/C%2B%2B-Eine-Einf%C3%BChrung-Ulrich-Breymann/dp/3446192336/ref=sr_1_3?ie=UTF8&amp;s=books&amp;qid=1205085597&amp;sr=1-3" rel="nofollow">http://www.amazon.de/C%2B%2B-Eine-Einf%C3%BChrung-Ulrich-Breymann/dp/3446192336/ref=sr_1_3?ie=UTF8&amp;s=books&amp;qid=1205085597&amp;sr=1-3</a>???</p>
</blockquote>
<p>Genau das. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1471092</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471092</guid><dc:creator><![CDATA[funky cat]]></dc:creator><pubDate>Sun, 09 Mar 2008 18:03:13 GMT</pubDate></item><item><title><![CDATA[Reply to cin.get()&#x2F;cin.putback() &amp;lt;-- Was machen die on Sun, 09 Mar 2008 18:06:37 GMT]]></title><description><![CDATA[<p>superb... dann weis ich ja was ich mir demnächst bestelle... vielen dank....^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1471095</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471095</guid><dc:creator><![CDATA[Jud4s]]></dc:creator><pubDate>Sun, 09 Mar 2008 18:06:37 GMT</pubDate></item><item><title><![CDATA[Reply to cin.get()&#x2F;cin.putback() &amp;lt;-- Was machen die on Mon, 10 Mar 2008 07:10:24 GMT]]></title><description><![CDATA[<p>Jud4s schrieb:</p>
<blockquote>
<p>gibt es Vorgaben was ich in was setzen darf?? Gibt der Compiler z.b. ein Fehler aus wenn ich in eine *char eine '9' einlesen will, oder in eine int ein 'c'??? Oder wird das dann zu einem laufzeitfehler??</p>
</blockquote>
<p>Beide Funktionen arbeiten (nur) mit char, von daher ist die Frage hinfällig.</p>
<p>Es gibt allerdings die Beschränkung, dass das zurückgelegte Zeichen exakt das Zeichen sein muss, welches zuletzt gelesen wurde (27.5.2.2.4).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1471240</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471240</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Mon, 10 Mar 2008 07:10:24 GMT</pubDate></item><item><title><![CDATA[Reply to cin.get()&#x2F;cin.putback() &amp;lt;-- Was machen die on Mon, 10 Mar 2008 13:09:51 GMT]]></title><description><![CDATA[<p>Jud4s schrieb:</p>
<blockquote>
<p>keyy... ist interressant....</p>
<p>gibt es Vorgaben was ich in was setzen darf?? Gibt der Compiler z.b. ein Fehler aus wenn ich in eine *char eine '9' einlesen will, oder in eine int ein 'c'??? Oder wird das dann zu einem laufzeitfehler??</p>
</blockquote>
<p>da '9' als zeichen eingelesen wird und nicht als zahl klappt das wunderbar.<br />
wenn man ein nicht-numerisches zeichen in einen int einliest, wird normalerweise der ASCII-code für dieses zeichen in der variablen gespeichert.<br />
also kein compiler-error, aber vielleicht ein bug / unvorhergesehenes verhalten des programms. und die meisten compiler geben wohl ein warning.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1471420</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471420</guid><dc:creator><![CDATA[Dave_R]]></dc:creator><pubDate>Mon, 10 Mar 2008 13:09:51 GMT</pubDate></item></channel></rss>