<?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[Frage zu atoi()]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich habe einen String in dem Zahlen stehen (Σ ={0...9}).<br />
Diese will ich wie folgt errechnen:</p>
<pre><code class="language-cpp">int p;
string P = &quot;123&quot;;  
for(string::iterator p_iter = P.begin();p_iter != P.end();++p_iter)
            p = p + atoi(p_iter) * pow(base,(p_iter-P.begin()));
</code></pre>
<p>mein Problem ist: Ich will nicht <em>123</em> haben sondern erst <em>1</em> dann <em>2</em>... usw.</p>
<p><strong>atoi</strong> braucht ein <strong>const char</strong>*, wie in meinem Beispiel. Aber ich will ja nur die erste Zahl haben. Wenn ich den Iterator dereferenziere bekomme ich den Char auf den er zeigt, aber das will atoi() wieder nicht machen. Ich kann auch keine Leerzeichen zwischen den Zahlen einfügen!<br />
Geht das irgendwie elegant mit dem Iterator? Ich würde es nämlich gerne bei einer Zeile belassen...</p>
<p><strong>also nicht so</strong></p>
<pre><code class="language-cpp">for(string::iterator p_iter = P.begin();p_iter != P.end();++p_iter)
{
          char a = *p_iter;
          p = p + atoi(&amp;a) * pow(base,(p_iter-P.begin()));
}
</code></pre>
<p>danke im voRaus</p>
<p>grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/136200/frage-zu-atoi</link><generator>RSS for Node</generator><lastBuildDate>Sat, 29 Aug 2026 09:22:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/136200.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 08 Feb 2006 09:30:31 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zu atoi() on Wed, 08 Feb 2006 09:30:31 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich habe einen String in dem Zahlen stehen (Σ ={0...9}).<br />
Diese will ich wie folgt errechnen:</p>
<pre><code class="language-cpp">int p;
string P = &quot;123&quot;;  
for(string::iterator p_iter = P.begin();p_iter != P.end();++p_iter)
            p = p + atoi(p_iter) * pow(base,(p_iter-P.begin()));
</code></pre>
<p>mein Problem ist: Ich will nicht <em>123</em> haben sondern erst <em>1</em> dann <em>2</em>... usw.</p>
<p><strong>atoi</strong> braucht ein <strong>const char</strong>*, wie in meinem Beispiel. Aber ich will ja nur die erste Zahl haben. Wenn ich den Iterator dereferenziere bekomme ich den Char auf den er zeigt, aber das will atoi() wieder nicht machen. Ich kann auch keine Leerzeichen zwischen den Zahlen einfügen!<br />
Geht das irgendwie elegant mit dem Iterator? Ich würde es nämlich gerne bei einer Zeile belassen...</p>
<p><strong>also nicht so</strong></p>
<pre><code class="language-cpp">for(string::iterator p_iter = P.begin();p_iter != P.end();++p_iter)
{
          char a = *p_iter;
          p = p + atoi(&amp;a) * pow(base,(p_iter-P.begin()));
}
</code></pre>
<p>danke im voRaus</p>
<p>grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/989162</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/989162</guid><dc:creator><![CDATA[Cyriz]]></dc:creator><pubDate>Wed, 08 Feb 2006 09:30:31 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu atoi() on Wed, 08 Feb 2006 09:43:28 GMT]]></title><description><![CDATA[<p>Warum so umständlich? Du könntest den String doch in einem Rutsch durch &quot;p=atoi(P.c_str());&quot; umwandeln.</p>
<p>(und wenn du das wirklich von Hand machen willst - mit &quot;*p_iter-'0'&quot; bekommst du den Zahlenwert der aktuellen Ziffer)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/989171</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/989171</guid><dc:creator><![CDATA[CStoll (off)]]></dc:creator><pubDate>Wed, 08 Feb 2006 09:43:28 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu atoi() on Wed, 08 Feb 2006 10:29:57 GMT]]></title><description><![CDATA[<p>Das mit *p_iter - '0' ist gut... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
<p>CStoll schrieb:</p>
<blockquote>
<p>Warum so umständlich? Du könntest den String doch in einem Rutsch durch &quot;p=atoi(P.c_str());&quot; umwandeln.</p>
</blockquote>
<p>Nee, das geht nicht, dann hab ich ja 123 und ich muss die 1, 2, 3 seperat zusammenrechnen. Erste Zahl zu 10*0 zweite 10*1... usw.</p>
<p>vielen Dank!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/989204</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/989204</guid><dc:creator><![CDATA[Cyriz]]></dc:creator><pubDate>Wed, 08 Feb 2006 10:29:57 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu atoi() on Wed, 08 Feb 2006 10:39:11 GMT]]></title><description><![CDATA[<p>Ich meinte nicht, in der Schleife jedes Mal atoi() aufzurufen, sondern ANSTELLE der Schleife die Umrechnung von atoi durchführen zu lassen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/989210</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/989210</guid><dc:creator><![CDATA[CStoll (off)]]></dc:creator><pubDate>Wed, 08 Feb 2006 10:39:11 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu atoi() on Wed, 08 Feb 2006 15:23:30 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">template&lt;typename TargetType, typename StringType&gt;
TargetType lexical_cast(StringType const&amp; str)
{
	std::basic_istringstream&lt;typename StringType::value_type&gt; stream(str);
	TargetType trg;
	stream &gt;&gt; trg;
	return trg;
}
</code></pre>
<pre><code class="language-cpp">string str=&quot;123&quot;;
int num = lexical_cast&lt;int&gt;(str);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/989417</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/989417</guid><dc:creator><![CDATA[OMFG]]></dc:creator><pubDate>Wed, 08 Feb 2006 15:23:30 GMT</pubDate></item></channel></rss>