<?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[std::getline wird nach Lesen von stdin übersprungen]]></title><description><![CDATA[<p>Ich versuche in meinem Programm von stdin zu lesen. Das Programm wird wie folgt aufgerufen:</p>
<pre><code>./project &lt;&lt;&lt; &quot;foobar&quot;
</code></pre>
<p>Nun habe ich das Problem, dass <code>std::getline</code> einfach übersprungen wird, was bei einem normalen Aufruf ( <code>./project</code> ) nicht passiert.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

int main(){
    char c;
    while(std::cin.get(c) &amp;&amp; c != '\n');

    std::string line;
    std::getline(std::cin, line);
}
</code></pre>
<p>Ich habe auch schon folgende beiden Zeilen ausprobiert:</p>
<pre><code class="language-cpp">std::cin.clear();
    std::cin.ignore(std::numeric_limits&lt;std::streamsize&gt;::max(), '\n');
</code></pre>
<p>Mit dem gleichen Ergebnis.<br />
Wie also mach ich das, wenn ich will, dass man std::cin ein weiteres Mal benutzen kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/338321/std-getline-wird-nach-lesen-von-stdin-übersprungen</link><generator>RSS for Node</generator><lastBuildDate>Mon, 13 Apr 2026 15:06:31 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/338321.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 08 Jun 2016 15:55:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to std::getline wird nach Lesen von stdin übersprungen on Wed, 08 Jun 2016 15:55:30 GMT]]></title><description><![CDATA[<p>Ich versuche in meinem Programm von stdin zu lesen. Das Programm wird wie folgt aufgerufen:</p>
<pre><code>./project &lt;&lt;&lt; &quot;foobar&quot;
</code></pre>
<p>Nun habe ich das Problem, dass <code>std::getline</code> einfach übersprungen wird, was bei einem normalen Aufruf ( <code>./project</code> ) nicht passiert.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

int main(){
    char c;
    while(std::cin.get(c) &amp;&amp; c != '\n');

    std::string line;
    std::getline(std::cin, line);
}
</code></pre>
<p>Ich habe auch schon folgende beiden Zeilen ausprobiert:</p>
<pre><code class="language-cpp">std::cin.clear();
    std::cin.ignore(std::numeric_limits&lt;std::streamsize&gt;::max(), '\n');
</code></pre>
<p>Mit dem gleichen Ergebnis.<br />
Wie also mach ich das, wenn ich will, dass man std::cin ein weiteres Mal benutzen kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2498170</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2498170</guid><dc:creator><![CDATA[Wilhelm D]]></dc:creator><pubDate>Wed, 08 Jun 2016 15:55:30 GMT</pubDate></item><item><title><![CDATA[Reply to std::getline wird nach Lesen von stdin übersprungen on Wed, 08 Jun 2016 16:31:35 GMT]]></title><description><![CDATA[<p>Sorry, stdin übersehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2498173</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2498173</guid><dc:creator><![CDATA[DirkB]]></dc:creator><pubDate>Wed, 08 Jun 2016 16:31:35 GMT</pubDate></item><item><title><![CDATA[Reply to std::getline wird nach Lesen von stdin übersprungen on Wed, 08 Jun 2016 16:45:20 GMT]]></title><description><![CDATA[<p>Willst du sowas:</p>
<pre><code>% (echo &quot;foobar&quot;; cat) | ./project
</code></pre>
<p>Denn das stdin ist ja umgebogen und ist leer nachdem das foobar konsumiert ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2498175</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2498175</guid><dc:creator><![CDATA[wob]]></dc:creator><pubDate>Wed, 08 Jun 2016 16:45:20 GMT</pubDate></item><item><title><![CDATA[Reply to std::getline wird nach Lesen von stdin übersprungen on Wed, 08 Jun 2016 16:51:07 GMT]]></title><description><![CDATA[<p>wob schrieb:</p>
<blockquote>
<p>Willst du sowas:</p>
<pre><code>% (echo &quot;foobar&quot;; cat) | ./project
</code></pre>
<p>Denn das stdin ist ja umgebogen und ist leer nachdem das foobar konsumiert ist.</p>
</blockquote>
<p><code>echo foobar|./cppProject</code> und <code>./cppProject &lt;&lt;&lt; &quot;foobar&quot;</code> müsste doch eigentlich das Gleiche bewirken. Gut, aber wie mache ich std::cin dann wieder valide für die nächste Input-Operation? Den Status auf <code>goodbit</code> setzen und X Zeichen extrahieren hat nicht funktioniert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2498177</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2498177</guid><dc:creator><![CDATA[Wilhelm D]]></dc:creator><pubDate>Wed, 08 Jun 2016 16:51:07 GMT</pubDate></item><item><title><![CDATA[Reply to std::getline wird nach Lesen von stdin übersprungen on Wed, 08 Jun 2016 17:06:08 GMT]]></title><description><![CDATA[<p>Beachte das zusätzliche <code>cat</code> bei mir.</p>
<p>Du kannst nicht einfach irgendein Handle &quot;valide machen&quot; und dann erwarten, dass Tastatureingabe rauskommt. Wenn du dagegen von <code>(echo &quot;bla&quot;; cat)</code> liest, bekommst du nach dem bla noch wieder das ursprüngliche stdin. Genaugenommen liest du dann die ganze Zeit vom selben Eingabestrom (nämlich dem des Prozesses, der die Klammern ausführt und dir nacheinander unterschiedliche Dinge gibt).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2498183</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2498183</guid><dc:creator><![CDATA[wob]]></dc:creator><pubDate>Wed, 08 Jun 2016 17:06:08 GMT</pubDate></item><item><title><![CDATA[Reply to std::getline wird nach Lesen von stdin übersprungen on Wed, 08 Jun 2016 17:29:36 GMT]]></title><description><![CDATA[<blockquote>
<p>Beachte das zusätzliche cat bei mir.</p>
</blockquote>
<p>Ja, damit scheint es zu klappen. Aber geht das nicht schöner und auch noch C++-Intern?<br />
Ansonsten schonmal danke für die Antworten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2498185</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2498185</guid><dc:creator><![CDATA[Wilhelm D]]></dc:creator><pubDate>Wed, 08 Jun 2016 17:29:36 GMT</pubDate></item></channel></rss>