<?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[Hilfe zur Strings]]></title><description><![CDATA[<p>So wir nehmen in der Schule C++ und Strings</p>
<p>Dabei ist die Frage aufgetretten wie mann dieses Programm (String)<strong>Auch mit negativen Zahlen</strong> eingeben kann.</p>
<pre><code class="language-cpp">#include &quot;stdafx.h&quot;
#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;cmath&gt;

using namespace std;

int stringtonumber (string zeichenkette)
{
	int zahl =0;
	unsigned stringlaenge;
	stringlaenge = zeichenkette.length();
	int	z = 0;							int i = 0;	
       	char c;	

	while ( i &lt; stringlaenge )
		{
			c = zeichenkette [ stringlaenge -1 -i ];
			if ( 48 &lt;= c &amp;&amp; c &lt;= 57 )
			{
				z = c - 48;
				zahl = zahl + z * pow(10.0, i);
				i = i + 1;
			}

			else
			{
				cout &lt;&lt; &quot;Ihre Eingabe ist keine Zahl!\n&quot;;
				zahl = 0;
				i = stringlaenge;											
			}
		}
		return (zahl);
}

int main(void)
{
	bool neue_eingabe;

	do
	{
		cout &lt;&lt;	&quot;Geben Sie eine beliebige Zahl oder \&quot;x\&quot; zum beenden ein: &quot;;
		string eingabe;
		cin &gt;&gt;	eingabe;

		if(eingabe [0] == 'x' || eingabe[0] == 'X')
		{
			neue_eingabe = false;
		}
		else
		{
			neue_eingabe = true;
			cout &lt;&lt; &quot;Die Zahl lautet: &quot; &lt;&lt; stringtonumber(eingabe) &lt;&lt; &quot;\n&quot;;
		}

	}

 	while(neue_eingabe);
	return 0;

}
</code></pre>
<p>ich bin der meinung Dass man aus dem <strong>unsigned stringlaenge;</strong> <strong>eine signed stringlaenge;</strong> machen muss ??? aber es funktioniert nicht so richtig ; :p</p>
<p>Vielen Dank für die Hilfe</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/300365/hilfe-zur-strings</link><generator>RSS for Node</generator><lastBuildDate>Wed, 12 Aug 2026 21:13:45 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/300365.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 01 Mar 2012 17:51:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Hilfe zur Strings on Thu, 01 Mar 2012 17:51:13 GMT]]></title><description><![CDATA[<p>So wir nehmen in der Schule C++ und Strings</p>
<p>Dabei ist die Frage aufgetretten wie mann dieses Programm (String)<strong>Auch mit negativen Zahlen</strong> eingeben kann.</p>
<pre><code class="language-cpp">#include &quot;stdafx.h&quot;
#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;cmath&gt;

using namespace std;

int stringtonumber (string zeichenkette)
{
	int zahl =0;
	unsigned stringlaenge;
	stringlaenge = zeichenkette.length();
	int	z = 0;							int i = 0;	
       	char c;	

	while ( i &lt; stringlaenge )
		{
			c = zeichenkette [ stringlaenge -1 -i ];
			if ( 48 &lt;= c &amp;&amp; c &lt;= 57 )
			{
				z = c - 48;
				zahl = zahl + z * pow(10.0, i);
				i = i + 1;
			}

			else
			{
				cout &lt;&lt; &quot;Ihre Eingabe ist keine Zahl!\n&quot;;
				zahl = 0;
				i = stringlaenge;											
			}
		}
		return (zahl);
}

int main(void)
{
	bool neue_eingabe;

	do
	{
		cout &lt;&lt;	&quot;Geben Sie eine beliebige Zahl oder \&quot;x\&quot; zum beenden ein: &quot;;
		string eingabe;
		cin &gt;&gt;	eingabe;

		if(eingabe [0] == 'x' || eingabe[0] == 'X')
		{
			neue_eingabe = false;
		}
		else
		{
			neue_eingabe = true;
			cout &lt;&lt; &quot;Die Zahl lautet: &quot; &lt;&lt; stringtonumber(eingabe) &lt;&lt; &quot;\n&quot;;
		}

	}

 	while(neue_eingabe);
	return 0;

}
</code></pre>
<p>ich bin der meinung Dass man aus dem <strong>unsigned stringlaenge;</strong> <strong>eine signed stringlaenge;</strong> machen muss ??? aber es funktioniert nicht so richtig ; :p</p>
<p>Vielen Dank für die Hilfe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2187468</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2187468</guid><dc:creator><![CDATA[TubularCamilo]]></dc:creator><pubDate>Thu, 01 Mar 2012 17:51:13 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe zur Strings on Thu, 01 Mar 2012 18:07:41 GMT]]></title><description><![CDATA[<p>Tjoa ich würd einfach überprüfen, ob das erste Zeichen im String ein '-' ist:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;cctype&gt; //fuer isdigit

int to_int(std::string s)
{
    int value = 0;
    for(unsigned i = 0; i &lt; s.length(); ++i)
    {
        if(std::isdigit(s[i])) 
            value = (value * 10) + (s[i] - '0');
    }
    if(s[0] == '-') return -value; //tadaa
    return value;
}

int main()
{
    std::cout &lt;&lt; to_int(&quot;123&quot;) &lt;&lt; &quot;\n&quot;
              &lt;&lt; to_int(&quot;-123&quot;);
    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2187476</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2187476</guid><dc:creator><![CDATA[Incocnito]]></dc:creator><pubDate>Thu, 01 Mar 2012 18:07:41 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe zur Strings on Thu, 01 Mar 2012 18:04:19 GMT]]></title><description><![CDATA[<p>Du kannst doch z.B. einfach das erste Zeichen in der Zeichenkette überprüfen, ob es das '-' Zeichen ist. Falls ja setzt du eine Variable bool negativ = true, falls nein setzt du sie false. Am Ende der Funktion schaust du dann, ob negativ==true. Falls ja multiplizierst die Zahl mit -1.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2187480</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2187480</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 01 Mar 2012 18:04:19 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe zur Strings on Thu, 01 Mar 2012 20:21:38 GMT]]></title><description><![CDATA[<p>Gugelmoser schrieb:</p>
<blockquote>
<p>Du kannst doch z.B. einfach das erste Zeichen in der Zeichenkette überprüfen, ob es das '-' Zeichen ist. Falls ja setzt du eine Variable bool negativ = true, falls nein setzt du sie false. Am Ende der Funktion schaust du dann, ob negativ==true. Falls ja multiplizierst die Zahl mit -1.</p>
</blockquote>
<p>Wie wurde dann der Queltex Ausehen ...also intregiert in meinen ???</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2187531</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2187531</guid><dc:creator><![CDATA[TubularCamilo]]></dc:creator><pubDate>Thu, 01 Mar 2012 20:21:38 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe zur Strings on Thu, 01 Mar 2012 20:39:12 GMT]]></title><description><![CDATA[<p>Hab ich dir doch gezeigt?!</p>
<p>Ich find deine Variante eher unschön, viel zu viel für so wenig.<br />
Aber wenn du willst:</p>
<p>statt</p>
<pre><code class="language-cpp">return (zahl);
</code></pre>
<p>einfach</p>
<pre><code class="language-cpp">if(zeichenkette[0] == '-')) return -zahl;
return zahl;
</code></pre>
<p>Oder von mir aus auch:</p>
<pre><code class="language-cpp">int stringtonumber (string zeichenkette)
{
    bool negativ = (zeichenkette[0] == '-');
    //...
    if(negativ) return -zahl;
    return zahl;
}
</code></pre>
<p>Außerdem funktioniert deine Variante nichtmal richtig, sie gibt falsche Werte aus. Ich schätze mal es liegt an der Konvertierung vom Ergebnis von pow(10, i): diese Funktion gibt einen double zurück, zb. 5.99999999 statt 6. Bei der impliziten Typkonvertierung nach int (da zahl vom Typ int ist) geht bei größeren Zahlen so Information verloren, da int(5.999999) = 5 ist (die Nachkommastellen werden einfach abgeschnitten).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2187538</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2187538</guid><dc:creator><![CDATA[Incocnito]]></dc:creator><pubDate>Thu, 01 Mar 2012 20:39:12 GMT</pubDate></item></channel></rss>