<?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[Eingabe über cin]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe ein bereits bestehendes Programm, das zur Eingabe von Variablen die cin Funktion benutzt. Nun möchte ich die bisherige Eingabemöglichkeit erweitern, indem das Programm bei Eingabe von Enter einen Standartwert annimmt. Bei cin wird jedoch bei Enter ohne vorherige Eingabe nur ein Zeilenvorschub gemacht, und weiter auf eine Eingabe gewartet.<br />
Ich habe über Google zwar einige Lösungsansätze gefunden, jedoch war keine dabei, die eine cin Eingabe verwendet, und da das Programm mitlerweile einigen Umfang hat, würde ich gerne wissen, ob es da eine einfachere Lösung gibt.</p>
<p>Hier nun der Quellcode einer der Aktuellen abfragen:</p>
<pre><code class="language-cpp">#include &quot;Daten.h&quot;
#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;iostream&gt;
using namespace std;

int main (void)
{

w = 1;
while (w == 1)
{
w = 0;

		cout&lt;&lt;&quot;\nEingabe:(Standartwert 5)?\n&quot;;
		cin&gt;&gt;Daten.eins;

			if (Daten.eins == 0)
			{
				Daten.eins = 5;
			}
			else if (Daten.eins &lt; 0)
			{
				printf( &quot;Falsche Eingabe.\n&quot;);
				w = 1;
				if (cin.fail())
				{
				cin.clear();
				while (cin.get() != '\n');
				}
			}
}
}
</code></pre>
<p>Aktuell Funktioniert die Standarteingabe über die Eingabe von 0, dies soll dann verbessert werden.</p>
<p>Danke für eure Hilfe. Ich hoffe ich habe mich verständlich genug ausgedrückt.</p>
<p>FSl</p>
<p>*Rechtschreibung bearbeitet</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/229338/eingabe-über-cin</link><generator>RSS for Node</generator><lastBuildDate>Sun, 27 Sep 2026 17:26:39 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/229338.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 10 Dec 2008 13:10:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Eingabe über cin on Wed, 10 Dec 2008 13:12:22 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe ein bereits bestehendes Programm, das zur Eingabe von Variablen die cin Funktion benutzt. Nun möchte ich die bisherige Eingabemöglichkeit erweitern, indem das Programm bei Eingabe von Enter einen Standartwert annimmt. Bei cin wird jedoch bei Enter ohne vorherige Eingabe nur ein Zeilenvorschub gemacht, und weiter auf eine Eingabe gewartet.<br />
Ich habe über Google zwar einige Lösungsansätze gefunden, jedoch war keine dabei, die eine cin Eingabe verwendet, und da das Programm mitlerweile einigen Umfang hat, würde ich gerne wissen, ob es da eine einfachere Lösung gibt.</p>
<p>Hier nun der Quellcode einer der Aktuellen abfragen:</p>
<pre><code class="language-cpp">#include &quot;Daten.h&quot;
#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;iostream&gt;
using namespace std;

int main (void)
{

w = 1;
while (w == 1)
{
w = 0;

		cout&lt;&lt;&quot;\nEingabe:(Standartwert 5)?\n&quot;;
		cin&gt;&gt;Daten.eins;

			if (Daten.eins == 0)
			{
				Daten.eins = 5;
			}
			else if (Daten.eins &lt; 0)
			{
				printf( &quot;Falsche Eingabe.\n&quot;);
				w = 1;
				if (cin.fail())
				{
				cin.clear();
				while (cin.get() != '\n');
				}
			}
}
}
</code></pre>
<p>Aktuell Funktioniert die Standarteingabe über die Eingabe von 0, dies soll dann verbessert werden.</p>
<p>Danke für eure Hilfe. Ich hoffe ich habe mich verständlich genug ausgedrückt.</p>
<p>FSl</p>
<p>*Rechtschreibung bearbeitet</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1628232</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1628232</guid><dc:creator><![CDATA[FSl]]></dc:creator><pubDate>Wed, 10 Dec 2008 13:12:22 GMT</pubDate></item><item><title><![CDATA[Reply to Eingabe über cin on Wed, 10 Dec 2008 13:27:11 GMT]]></title><description><![CDATA[<p>per getline einen string einlesen und diesen dann entsprechend behandeln. Zum Parsen diesen in einen stringstream geben und dann wie cin behandeln. Wäre eine Option.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1628248</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1628248</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Wed, 10 Dec 2008 13:27:11 GMT</pubDate></item><item><title><![CDATA[Reply to Eingabe über cin on Wed, 10 Dec 2008 13:57:20 GMT]]></title><description><![CDATA[<p>FSl schrieb:</p>
<blockquote>
<p>*Rechtschreibung bearbeitet</p>
</blockquote>
<p>&lt;Klugscheissmode&gt;<br />
Standard schreibt man auch nach der Rechtschreibreform immer noch mit 'd' am Ende<br />
&lt;/Klugscheissmode&gt;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1628263</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1628263</guid><dc:creator><![CDATA[jencas]]></dc:creator><pubDate>Wed, 10 Dec 2008 13:57:20 GMT</pubDate></item><item><title><![CDATA[Reply to Eingabe über cin on Thu, 11 Dec 2008 10:13:03 GMT]]></title><description><![CDATA[<p>Die Eingabe des Strings ist kein Problem, aber den stringstream verstehe ich noch nicht, ich muss ja 3 fälle unterscheiden, 1. Enter wird gedrückt ohne Eingabe, das müsste ja dann bedeuten das meine Eingabe == 0 ist, oder irre ich mich schon da? Der 2. Fall wäre eine Positive Zahl, bei der die Eingabe als Zahl weitergegeben wird, und der 3. Fall wären Zeichen bzw eine Negative Zahl, welche ich dann abfangen muss.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1628700</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1628700</guid><dc:creator><![CDATA[FSl]]></dc:creator><pubDate>Thu, 11 Dec 2008 10:13:03 GMT</pubDate></item><item><title><![CDATA[Reply to Eingabe über cin on Thu, 11 Dec 2008 10:17:22 GMT]]></title><description><![CDATA[<p>FSl schrieb:</p>
<blockquote>
<p>Die Eingabe des Strings ist kein Problem, aber den stringstream verstehe ich noch nicht, ich muss ja 3 fälle unterscheiden, 1. Enter wird gedrückt ohne Eingabe, das müsste ja dann bedeuten das meine Eingabe == 0 ist, oder irre ich mich schon da? Der 2. Fall wäre eine Positive Zahl, bei der die Eingabe als Zahl weitergegeben wird, und der 3. Fall wären Zeichen bzw eine Negative Zahl, welche ich dann abfangen muss.</p>
</blockquote>
<p>Es gibt zwei Möglichkeiten, wenn du die getline-Methode verwendest.</p>
<ol>
<li>Der Benutzer drückt einfach Enter: Dann ist der string anschließend leer (size() = 0)</li>
<li>Er gibt noch was anderes vor Enter ein (size != 0). Dann kannst du dir einen stringstream (achte darauf, dass der header dafür wohl aus historischen gründen etwas unintuitiv sstream benannt wurde) mit dem string basteln und dann genauso damit arbeiten, als hättest du cin benutzt für eine normale Eingabe.</li>
</ol>
]]></description><link>https://www.c-plusplus.net/forum/post/1628705</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1628705</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 11 Dec 2008 10:17:22 GMT</pubDate></item><item><title><![CDATA[Reply to Eingabe über cin on Thu, 11 Dec 2008 10:19:27 GMT]]></title><description><![CDATA[<p>Wenn Du direkt Werte mit cin einliest, dann hasst Du hinterher nicht zwangsläufig einen String, sondern eben einen Wert vom eingelesenen Typen.<br />
Beispiel:</p>
<pre><code class="language-cpp">int a;
std::cin &gt;&gt; a; //wenn alles gut ging, hast Du einen int und keinen String
</code></pre>
<p>Wenn Du mit std::getline arbeitest, hast Du immer einen String. Den kannst Du zunächst darauf prüfen, ob er z.B. leer ist, oder ob bestimmte Sequenzen enthalten sind (quit z.B.).<br />
Danach kanst Du den String mit Hilfe von std::stringstream in andere Typen konvertieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1628708</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1628708</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Thu, 11 Dec 2008 10:19:27 GMT</pubDate></item><item><title><![CDATA[Reply to Eingabe über cin on Thu, 11 Dec 2008 19:15:41 GMT]]></title><description><![CDATA[<p>Danke nochmal für die Tips, habs damit hinbekommen, nur gibt es noch eine kleinigkeit, ich hab jetzt zum Konvertieren des Strings in Double atof verwendent, und wenn ich eine Zahl gefolgt von einem Buchstaben eingebe, wird die erste Zahl angenommen (z.b. 4b3 =&gt; 4) das ist vor allem bei Eingaben wie 3,5 anstelle von 3.5 ärgerlich.</p>
<p>Wenn da noch jemandem was einfallen würde bin ich glücklich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1629079</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1629079</guid><dc:creator><![CDATA[FSl]]></dc:creator><pubDate>Thu, 11 Dec 2008 19:15:41 GMT</pubDate></item><item><title><![CDATA[Reply to Eingabe über cin on Mon, 15 Dec 2008 12:18:16 GMT]]></title><description><![CDATA[<p>So ich hab jetzt alle Probleme gelöst, die ich mir teils selbst aufgebrummt hab, falls jemand mal ähnliche Probleme hat wollte ich nur noch meinen fertigen Code reinstellen.</p>
<p>Achtung, das ganze ist ein ziemliche zusammengewürfelter Misch aus verschiedensten Formaten und ist auch nicht wirklich optimal geschrieben, jedoch stehe ich etwas unter Zeitdruck, und habe nicht die Zeit das ganze noch einmal sauber zu programmieren.</p>
<pre><code class="language-cpp">#include &quot;Datendefinition.h&quot;
#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;iostream&gt;
#include &lt;sstream&gt;
#include &lt;string&gt;
using namespace std;

int main (void)
{

Datendefinition Daten;
int w = 0, ww = 0, length = 0, numonly = 1;
string input;
char inputchar[256]=&quot; &quot;;
const char *inputcharp;

system(&quot;cls&quot;);

w = 1;
ww = 1;
while (w == 1)
{
w = 0;

		cout&lt;&lt;&quot;\nEingabe: (Standartwert: 5)?\n&quot;;
		getline (cin ,input);

		if (input.empty())
			{
				Daten.eins = 5;
			}
			else 
			{
				inputcharp = input.c_str();
				strcpy( inputchar, inputcharp);
				length = strlen(inputchar); 
					while (ww &lt; length) 
					{ 
					if (isdigit(inputchar[ww]) == 0 &amp;&amp; inputchar[ww] != '.') 
						{
							numonly = 0; 
						}
					ww++; 
					}
					if (numonly != 0)
					{
					Daten.eins = atof(input.data());
					}
			}
			if (Daten.eins &lt;= 0)
			{
			cout&lt;&lt;&quot;Falsche Eingabe.\n&quot;;
				w = 1;
			}
numonly = 1;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1630734</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1630734</guid><dc:creator><![CDATA[FSl]]></dc:creator><pubDate>Mon, 15 Dec 2008 12:18:16 GMT</pubDate></item><item><title><![CDATA[Reply to Eingabe über cin on Mon, 15 Dec 2008 12:50:18 GMT]]></title><description><![CDATA[<p>Viel zu kompliziert. std::stringstream macht schon alle Checks für Dich.</p>
<p>Irgendwie so vllt. Evtl. gehts noch einfacher, und evtl. sind noch irgendwelche Fehler drin:</p>
<pre><code class="language-cpp">#include &quot;Datendefinition.h&quot;
#include &lt;iostream&gt;
#include &lt;sstream&gt;
#include &lt;string&gt;

int main ( )
{
    Datendefinition Daten(5);
    bool succeeded = true;
    std::string input;    
    do
    {
        std::cout&lt;&lt;&quot;\nEingabe: (Standartwert: 5)?\n&quot;;                
        std::getline (std::cin, input);

        if ( !input.empty() )
        {
            std::stringstream str(input);
            if( !(str &gt;&gt; Daten.eins) )
            {
                succeeded = false;
                std::cout&lt;&lt;&quot;Falsche Eingabe.\n&quot;;
            }
            else
            {
                succeeded = true;
            }
        }
    } while( !succeeded &amp;&amp; !input.empty() );

    std::cout &lt;&lt; Daten.eins &lt;&lt; '\n';

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1630748</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1630748</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Mon, 15 Dec 2008 12:50:18 GMT</pubDate></item></channel></rss>