<?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::cin zeitlich begrenzen]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich hätte mal eine Frage an die Community, da die Internetrecherche nichts vielversprechendes ergab und zwar möchte ich eine CIN Eingabe zeitlich begrenzen. Das bedeutet, das mein Programm bis zu einem gewissen Punkt ausgeführt wird und eine Eingabe vom Benutzer verlangt, wird die Eingabezeit (bspw. 10 Sek) überschritten wird ein default Wert verwendet und weiter gemacht.</p>
<p>Wäre sowas in C++ leicht umzusetzen? Bislang habe ich gelesen, dass man dafür einen zweiten Thread macht, den ersten pausiert und nach x Sekunden dann weitermacht mit Thread 1 und Thread 2 schließt.</p>
<p>Wäre über Ratschläge dankbar.</p>
<p>PS: Das Problem das ich gerade habe ist, dass CIN eine Eingabe erwartet. Wenn ich bspw. mit einer while Schleife arbeite, funktioniert das nicht, das bei</p>
<pre><code>std::cin&gt;&gt; var
</code></pre>
<p>das Programm steht bis eine Eingabe kommt (aber das wisst ihr ja alle).</p>
<p>Grüße Tobi</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/331069/std-cin-zeitlich-begrenzen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 01 May 2026 21:02:09 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/331069.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 09 Feb 2015 14:40:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to std::cin zeitlich begrenzen on Mon, 09 Feb 2015 14:40:00 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich hätte mal eine Frage an die Community, da die Internetrecherche nichts vielversprechendes ergab und zwar möchte ich eine CIN Eingabe zeitlich begrenzen. Das bedeutet, das mein Programm bis zu einem gewissen Punkt ausgeführt wird und eine Eingabe vom Benutzer verlangt, wird die Eingabezeit (bspw. 10 Sek) überschritten wird ein default Wert verwendet und weiter gemacht.</p>
<p>Wäre sowas in C++ leicht umzusetzen? Bislang habe ich gelesen, dass man dafür einen zweiten Thread macht, den ersten pausiert und nach x Sekunden dann weitermacht mit Thread 1 und Thread 2 schließt.</p>
<p>Wäre über Ratschläge dankbar.</p>
<p>PS: Das Problem das ich gerade habe ist, dass CIN eine Eingabe erwartet. Wenn ich bspw. mit einer while Schleife arbeite, funktioniert das nicht, das bei</p>
<pre><code>std::cin&gt;&gt; var
</code></pre>
<p>das Programm steht bis eine Eingabe kommt (aber das wisst ihr ja alle).</p>
<p>Grüße Tobi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2441983</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2441983</guid><dc:creator><![CDATA[Shor-ty]]></dc:creator><pubDate>Mon, 09 Feb 2015 14:40:00 GMT</pubDate></item><item><title><![CDATA[Reply to std::cin zeitlich begrenzen on Mon, 09 Feb 2015 14:45:00 GMT]]></title><description><![CDATA[<p>Shor-ty schrieb:</p>
<blockquote>
<p>Wäre sowas in C++ leicht umzusetzen?</p>
</blockquote>
<p>Nicht mit Standard C++ und cin.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2441984</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2441984</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Mon, 09 Feb 2015 14:45:00 GMT</pubDate></item><item><title><![CDATA[Reply to std::cin zeitlich begrenzen on Mon, 09 Feb 2015 14:48:33 GMT]]></title><description><![CDATA[<p>Danke für die schnelle Antwort.<br />
Was wäre eine Alternative? Stichworte reichen, dann kann ich mich selber schlau machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2441985</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2441985</guid><dc:creator><![CDATA[Shor-ty]]></dc:creator><pubDate>Mon, 09 Feb 2015 14:48:33 GMT</pubDate></item><item><title><![CDATA[Reply to std::cin zeitlich begrenzen on Mon, 09 Feb 2015 14:55:27 GMT]]></title><description><![CDATA[<p>Ich denke mit den Begriffen &quot;Filedeskriptor&quot;, &quot;stdin&quot;, &quot;read&quot; und &quot;select&quot; kannst du was finden. Ist aber alles plattformabhängig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2441986</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2441986</guid><dc:creator><![CDATA[Jodocus]]></dc:creator><pubDate>Mon, 09 Feb 2015 14:55:27 GMT</pubDate></item><item><title><![CDATA[Reply to std::cin zeitlich begrenzen on Mon, 09 Feb 2015 15:01:32 GMT]]></title><description><![CDATA[<p>Okay vielen Dank, dann werde ich mich mal schlau machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2441987</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2441987</guid><dc:creator><![CDATA[Shor-ty]]></dc:creator><pubDate>Mon, 09 Feb 2015 15:01:32 GMT</pubDate></item><item><title><![CDATA[Reply to std::cin zeitlich begrenzen on Mon, 09 Feb 2015 15:40:32 GMT]]></title><description><![CDATA[<p>Mh, wieso?</p>
<p>Kann er nicht einen zweiten Thread für die Eingabe mit std::cin aufmachen und immer wieder prüfen, ob da ein Ergebnis kam, und halt nach x Sekunden den Thread abschiessen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2441989</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2441989</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Mon, 09 Feb 2015 15:40:32 GMT</pubDate></item><item><title><![CDATA[Reply to std::cin zeitlich begrenzen on Mon, 09 Feb 2015 15:42:39 GMT]]></title><description><![CDATA[<p>Du kannst mit Standard C++ keine Threads abschießen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2441990</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2441990</guid><dc:creator><![CDATA[patrick246]]></dc:creator><pubDate>Mon, 09 Feb 2015 15:42:39 GMT</pubDate></item><item><title><![CDATA[Reply to std::cin zeitlich begrenzen on Mon, 09 Feb 2015 15:58:25 GMT]]></title><description><![CDATA[<p>Sagt ja auch keiner. Aber man muss sich ja nicht mehr für den Thread interessieren <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>Hier mal so als Proof-of-Concept (Das ist kein schöner Code! Er soll nur das Prinzip zeigen!)</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;future&gt;
#include &lt;chrono&gt;

int userInput()
{
	std::cout &lt;&lt; &quot;Gib was ein: &quot;;

	int val;
	std::cin &gt;&gt; val;

	return val;
}

template&lt;class T&gt;
double dif(T t)
{
	using namespace std;
	using namespace std::chrono;

	auto now = high_resolution_clock::now();

	return duration_cast&lt;duration&lt;double&gt;&gt;(now - t).count();
}

int main()
{
	const auto waitTime = std::chrono::seconds(5);
	const int defaultValue = 5;

	auto input = std::async(std::launch::async, userInput);

	auto start = std::chrono::high_resolution_clock::now();
	while (input.wait_for(std::chrono::milliseconds(500)) == std::future_status::timeout)
	{
		std::cout &lt;&lt; &quot;.&quot;;

		if (dif(start) &gt;= waitTime.count())
			break;
	}

	int value = defaultValue;
	if (input.wait_for(std::chrono::milliseconds(0)) != std::future_status::timeout)
		value = input.get();

	std::cout &lt;&lt; &quot;\nValue: &quot; &lt;&lt; value &lt;&lt; std::endl;

	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2441991</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2441991</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Mon, 09 Feb 2015 15:58:25 GMT</pubDate></item><item><title><![CDATA[Reply to std::cin zeitlich begrenzen on Mon, 09 Feb 2015 16:00:02 GMT]]></title><description><![CDATA[<p>patrick246 schrieb:</p>
<blockquote>
<p>Du kannst mit Standard C++ keine Threads abschießen</p>
</blockquote>
<p>Nicht direkt, aber der 10 Sekunden-Warte-Thread könnte nach 10sec was nach cin schreiben.<br />
Ich weiss aber nicht, ob das Standard-Konform ist und generell ist es wohl keine gute Idee, in dem Fall mit cin zu arbeiten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2441992</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2441992</guid><dc:creator><![CDATA[Jockelx]]></dc:creator><pubDate>Mon, 09 Feb 2015 16:00:02 GMT</pubDate></item></channel></rss>