<?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[char* zu float]]></title><description><![CDATA[<p>ich bin grad dabei mit einen eigenen Parser zu basteln. Das parsen von den Zahlen selbst ist noch überhaupt nicht implementiert. Muss ich das auch noch selbst machen, oder gibts da schon was fertiges.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/186774/char-zu-float</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 11:41:26 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/186774.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 12 Jul 2007 10:32:33 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to char* zu float on Thu, 12 Jul 2007 10:32:33 GMT]]></title><description><![CDATA[<p>ich bin grad dabei mit einen eigenen Parser zu basteln. Das parsen von den Zahlen selbst ist noch überhaupt nicht implementiert. Muss ich das auch noch selbst machen, oder gibts da schon was fertiges.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1323743</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1323743</guid><dc:creator><![CDATA[Krux]]></dc:creator><pubDate>Thu, 12 Jul 2007 10:32:33 GMT</pubDate></item><item><title><![CDATA[Reply to char* zu float on Thu, 12 Jul 2007 10:42:32 GMT]]></title><description><![CDATA[<p>std::stringstream kann das.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1323748</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1323748</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Thu, 12 Jul 2007 10:42:32 GMT</pubDate></item><item><title><![CDATA[Reply to char* zu float on Thu, 12 Jul 2007 11:07:16 GMT]]></title><description><![CDATA[<p>David_pb schrieb:</p>
<blockquote>
<p>std::stringstream kann das.</p>
</blockquote>
<p>Und zwar so:</p>
<pre><code class="language-cpp">template &lt;typename To, typename From&gt;
bool try_lexical_cast(From const&amp; from, To* to)
{
    std::stringstream interpreter;
    return interpreter &lt;&lt; from and interpreter &gt;&gt; *to and interpreter.eof();
}

struct invalid_cast : std::logic_error {
    invalid_cast() : std::logic_error(&quot;Invalid cast.&quot;) { }
};

template &lt;typename To, typename From&gt;
To lexical_cast(From const&amp; from)
{
    To ret;
    if (not try_lexical_cast(from, &amp;ret))
        throw invalid_cast();
    return ret;
}
</code></pre>
<p>Es gibt noch allgemeinere Implementierungen (Parametrisierung des Interpreters) aber ich denke, die hier ist schon ganz in Ordnung).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1323765</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1323765</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Thu, 12 Jul 2007 11:07:16 GMT</pubDate></item><item><title><![CDATA[Reply to char* zu float on Thu, 12 Jul 2007 11:23:48 GMT]]></title><description><![CDATA[<p>Oder so:</p>
<pre><code class="language-cpp">template &lt;typename To, typename From&gt; 
bool try_lexical_cast(From const&amp; from, To&amp; to) 
{ 
    std::stringstream interpreter; 
    return interpreter &lt;&lt; from &amp;&amp; interpreter &gt;&gt; to &amp;&amp; ( interpreter &gt;&gt; std::ws ).eof(); 
} 

struct invalid_cast : std::logic_error { 
    invalid_cast() : std::logic_error(&quot;Invalid cast.&quot;) { } 
}; 

template &lt;typename To, typename From&gt; 
To lexical_cast(From const&amp; from) 
{ 
    To ret; 
    if (!try_lexical_cast(from, ret)) 
        throw invalid_cast(); 
    return ret; 
}
</code></pre>
<p>Oder so:</p>
<pre><code class="language-cpp">template &lt;typename To, typename From&gt; 
To lexical_cast(From const&amp; from) 
{ 
	std::stringstream cnv;
	To tmp;

	if ( !( cnv &lt;&lt; from &amp;&amp; cnv &gt;&gt; tmp &amp;&amp; ( cnv &gt;&gt; std::ws ).eof() ) )
		throw std::logic_error( &quot;lexical_cast failed&quot; );

	return tmp;
}
</code></pre>
<p>Oder so:</p>
<pre><code class="language-cpp">float x = boost::lexical_cast&lt; float &gt;( &quot;3.1415&quot; );
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1323781</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1323781</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Thu, 12 Jul 2007 11:23:48 GMT</pubDate></item><item><title><![CDATA[Reply to char* zu float on Thu, 12 Jul 2007 11:32:12 GMT]]></title><description><![CDATA[<p>ich hab mich mal an google gewendet (hätte ich vorher machen sollen), und</p>
<pre><code class="language-cpp">float atof(char*);
</code></pre>
<p>gefunden, ich denke das passt für meine bedürfnisse besser, als so was langes wie das mit den stringstreams. Das ist vor allem kurz.</p>
<p>Edit:<br />
das letzte sieht auch nicht schlecht aus, vor allem, weil es ein einzeiler ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1323790</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1323790</guid><dc:creator><![CDATA[Krux]]></dc:creator><pubDate>Thu, 12 Jul 2007 11:32:12 GMT</pubDate></item><item><title><![CDATA[Reply to char* zu float on Thu, 12 Jul 2007 11:35:03 GMT]]></title><description><![CDATA[<p>Dafür sind stringstream's weitaus flexibler einzusetzen <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="😉"
    /> (mit den lexical_cast's dort oben kannst du alles konvertieren, was die Stream-Operatoren überladen hat, atof() ist speziell für eine mögliche Umwandlung ausgelegt - und obendrein noch ein Erbe aus C, was manchen C++lern Unbehagen bereitet)</p>
<p>PS: Hättest du erst die FAQ gelesen, wärst du schneller zum Ziel gekommen <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1323795</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1323795</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 12 Jul 2007 11:35:03 GMT</pubDate></item><item><title><![CDATA[Reply to char* zu float on Thu, 12 Jul 2007 11:35:44 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">template &lt;typename To, typename From&gt; 
 To lexical_cast(From const&amp; from) 
 { 
     std::stringstream cnv; 
     To tmp; 

     if ( !( cnv &lt;&lt; from &amp;&amp; cnv &gt;&gt; tmp &amp;&amp; ( cnv &gt;&gt; std::ws ).eof() ) ) 
         throw std::logic_error( &quot;lexical_cast failed&quot; ); 

     return tmp; 
 }

int main()
{
    float x = lexical_cast&lt; float &gt;( &quot;3.1415&quot; );
}
</code></pre>
<p>Die andren sind auch Einzeiler wenn man sie verwendet... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1323796</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1323796</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Thu, 12 Jul 2007 11:35:44 GMT</pubDate></item></channel></rss>