<?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[string zu int]]></title><description><![CDATA[<p>Hey warum funktioniert das hier nicht ?</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;sstream&gt;

using namespace std;

int main()
{
    string s = &quot;LOL&quot;;
    stringstream ss(s);

    int value = 0;

    if(!ss &gt;&gt; value)
        return 1;

    cout &lt;&lt; value;
}
</code></pre>
<p>Er gibt true zurück und value ist immer noch 0.</p>
<p>So geht es...</p>
<pre><code class="language-cpp">if(ss &gt;&gt; value)
        cout &lt;&lt; value;
    else
        return 1;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/301449/string-zu-int</link><generator>RSS for Node</generator><lastBuildDate>Tue, 11 Aug 2026 23:50:38 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/301449.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 27 Mar 2012 18:10:11 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to string zu int on Tue, 27 Mar 2012 18:10:11 GMT]]></title><description><![CDATA[<p>Hey warum funktioniert das hier nicht ?</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;sstream&gt;

using namespace std;

int main()
{
    string s = &quot;LOL&quot;;
    stringstream ss(s);

    int value = 0;

    if(!ss &gt;&gt; value)
        return 1;

    cout &lt;&lt; value;
}
</code></pre>
<p>Er gibt true zurück und value ist immer noch 0.</p>
<p>So geht es...</p>
<pre><code class="language-cpp">if(ss &gt;&gt; value)
        cout &lt;&lt; value;
    else
        return 1;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2195959</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2195959</guid><dc:creator><![CDATA[Firebob]]></dc:creator><pubDate>Tue, 27 Mar 2012 18:10:11 GMT</pubDate></item><item><title><![CDATA[Reply to string zu int on Tue, 27 Mar 2012 18:20:50 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">!ss &gt;&gt; value
</code></pre>
<p>Das macht einen <code>bitwise right shift</code> und zwar auf 0.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2195962</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2195962</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 27 Mar 2012 18:20:50 GMT</pubDate></item><item><title><![CDATA[Reply to string zu int on Wed, 28 Mar 2012 12:18:40 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">//machs doch einfach so...
  string test = &quot;test&quot;;
  for (string::iterator i = test.begin(); i != test.end(); i++)
    cout &lt;&lt; int(*i) &lt;&lt; endl;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2196174</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196174</guid><dc:creator><![CDATA[realKoala]]></dc:creator><pubDate>Wed, 28 Mar 2012 12:18:40 GMT</pubDate></item><item><title><![CDATA[Reply to string zu int on Wed, 28 Mar 2012 13:48:07 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/28616">@realKoala</a>: Das ist totaler Schwachsinn.</p>
<p>Vorschlag:</p>
<pre><code class="language-cpp">std::string const stringval = &quot;12345&quot;;
int intval;

if(std::istringstream(stringval) &gt;&gt; intval)
    // yay
else
    // oh noes
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2196205</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196205</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Wed, 28 Mar 2012 13:48:07 GMT</pubDate></item><item><title><![CDATA[Reply to string zu int on Wed, 28 Mar 2012 13:56:50 GMT]]></title><description><![CDATA[<p>Um mal Butter bei die Fische zu tun und das ganze Halbwissen im Thread besser zu erklären: Da fehlen einfach nur ein paar Klammern, da ! stärker bindet als &gt;&gt;:</p>
<pre><code class="language-cpp">if(!(ss &gt;&gt; value))
</code></pre>
<p>Bei dem vorherigen</p>
<pre><code class="language-cpp">if(!ss &gt;&gt; value)
</code></pre>
<p>wird zuerst !ss ausgewertet, <a href="http://www.cplusplus.com/reference/iostream/ios/operatornot/" rel="nofollow">was false ergibt</a>, da der Stream zu dem Zeitpunkt nicht in einem Fehlerzustand ist. false als Integer hat den Wert 0, dieser wird dann um 0 nach rechts geshiftet, was immer noch 0 ist und entsprechend schlägt die if-Bedingung nicht an. Ebenso wurde an value nichts geändert, es wurde bloß sein Wert benutzt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2196211</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196211</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 28 Mar 2012 13:56:50 GMT</pubDate></item><item><title><![CDATA[Reply to string zu int on Wed, 28 Mar 2012 14:00:43 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/28616">@realKoala</a>: Das ist totaler Schwachsinn.</p>
</blockquote>
<p>Weil..</p>
<ul>
<li>In dem String gar keine Zahl drin ist und</li>
<li>Vergessen wurde '0' abzuziehen</li>
</ul>
<p>Zur Erläuterung: In der <a href="http://www.torsten-horn.de/techdocs/ascii.htm" rel="nofollow">ASCII-Tabelle</a> lässt sich erkennen, dass die Ziffern 0 bis 9 direkt hintereinder liegen. Mit</p>
<pre><code class="language-cpp">string s = &quot;123&quot;;
cout &lt;&lt; int(s[0]);
</code></pre>
<p>erreicht man den ASCII-Tabellenwert von '1', also 49. Zieht man nun den Wert von '0' ab, also 48, erhält man 49-48, also 1. Das gilt dann logischerweise auch für die anderen Ziffern.<br />
So erhält man also die Werte, blöd nur, das man die nicht einfach so in einen int reinschreiben kann (1+2+3+4 = 10, nicht 1234). Man macht also<br />
10 * 0 + 1 = 1<br />
10 * 1 + 2 = 12<br />
10 * 12 + 3 = 123<br />
...</p>
<p>Das ganze dann noch in eine Funktion verpacken, und so siehts dann aus:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

int stringZuInt(const std::string&amp; s) //als Referenz um nicht kopieren zu müssen, const um zu sagen,
{                                   //dass nichts verändert wird
    int zahl = 0;
    for(unsigned i = 0; i &lt; s.length(); ++i)
        zahl = (zahl * 10) + (s[i] - '0'); //wie besprochen
    return zahl;
}

int main()
{
    std::cout &lt;&lt; stringZuInt(&quot;321&quot;);
}
</code></pre>
<p>Dann weiß man wenigstens, was hinter den Kulissen passiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2196217</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196217</guid><dc:creator><![CDATA[Incocnito]]></dc:creator><pubDate>Wed, 28 Mar 2012 14:00:43 GMT</pubDate></item><item><title><![CDATA[Reply to string zu int on Wed, 28 Mar 2012 15:28:07 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Um mal Butter bei die Fische zu tun und das ganze Halbwissen im Thread besser zu erklären:</p>
<p>[...]</p>
</blockquote>
<p>Aber am Ergebnis würde das doch nichts ändern, weil in dem String keine Zahl steht?!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2196269</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196269</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Wed, 28 Mar 2012 15:28:07 GMT</pubDate></item><item><title><![CDATA[Reply to string zu int on Wed, 28 Mar 2012 15:50:43 GMT]]></title><description><![CDATA[<p>Belli schrieb:</p>
<blockquote>
<p>SeppJ schrieb:</p>
<blockquote>
<p>Um mal Butter bei die Fische zu tun und das ganze Halbwissen im Thread besser zu erklären:</p>
<p>[...]</p>
</blockquote>
<p>Aber am Ergebnis würde das doch nichts ändern, weil in dem String keine Zahl steht?!</p>
</blockquote>
<p>Doch! Das eine Mal bekommt man 0, also false, das andere Mal !0, also true! Also gegenteiliges Ergebnis und das ist auch, was den Threadersteller überraschte. Außerdem passiert etwas gänzlich anderes als erwartet, da überhaupt keine Leseaktion versucht wird, sondern stattdessen ein bisschen das Integerrechenwerk belastet wird!</p>
<p>Der Unterschied ist also ganz fatal!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2196282</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196282</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 28 Mar 2012 15:50:43 GMT</pubDate></item><item><title><![CDATA[Reply to string zu int on Wed, 28 Mar 2012 22:26:05 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/25153">@Incocnito</a> teste mal deinen schwachsinn mit BUCHSTABEN nicht mit ZAHLEN</p>
<p>er hat absichtlich ASCII genommen fällt dir das nicht irgendwie auf??????? omfg</p>
<p>deine func macht absolut keinen sinn <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2196426</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196426</guid><dc:creator><![CDATA[Aporea]]></dc:creator><pubDate>Wed, 28 Mar 2012 22:26:05 GMT</pubDate></item><item><title><![CDATA[Reply to string zu int on Thu, 29 Mar 2012 00:07:22 GMT]]></title><description><![CDATA[<p>In C++11 gibt es übrigens <a href="http://en.cppreference.com/w/cpp/string/basic_string/stol" rel="nofollow">std::stoi</a> dafür. Das wirft in dem Fall einfach eine Exception.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2196439</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196439</guid><dc:creator><![CDATA[rüdiger]]></dc:creator><pubDate>Thu, 29 Mar 2012 00:07:22 GMT</pubDate></item><item><title><![CDATA[Reply to string zu int on Thu, 29 Mar 2012 03:48:24 GMT]]></title><description><![CDATA[<p>rüdiger schrieb:</p>
<blockquote>
<p>In C++11 gibt es übrigens <a href="http://en.cppreference.com/w/cpp/string/basic_string/stol" rel="nofollow">std::stoi</a> dafür. Das wirft in dem Fall einfach eine Exception.</p>
</blockquote>
<p>Die trauen sich jetzt sogar einfach so Exceptions zu werfen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2196444</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196444</guid><dc:creator><![CDATA[boaha]]></dc:creator><pubDate>Thu, 29 Mar 2012 03:48:24 GMT</pubDate></item><item><title><![CDATA[Reply to string zu int on Thu, 29 Mar 2012 05:23:22 GMT]]></title><description><![CDATA[<p>Leute, nehmt einfach boost::lexical_cast. Das funktioniert in beide Richtungen und ist <strong>deutlich</strong> schneller als euer Stringstream zeugs, wirft auch eine Exception (boost::bad_lexical_cast) und kann sogut wie alle Basisdatentypen hin und her konvertieren ((Edit) Auch Strings zu solchen und umgekehrt).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2196451</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196451</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 29 Mar 2012 05:23:22 GMT</pubDate></item></channel></rss>