<?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[Zu std::string konvertieren]]></title><description><![CDATA[<p>Hi, hab ne frage zu den datentypen:</p>
<p>char - ist klar</p>
<pre><code class="language-cpp">char c='C';
std::string s(c);
</code></pre>
<p>short - wie?</p>
<p>int - klar</p>
<pre><code class="language-cpp">int i=1;
std::string s=atoi(i);
</code></pre>
<p>long - klar</p>
<pre><code class="language-cpp">long l=4 /*Was ist denn eine gute Benutzung für long? Hex-Zahlen?*/
std::string s=atol(l);
</code></pre>
<p>float - wie? (auch atof()?)</p>
<p>double - klar</p>
<pre><code class="language-cpp">float f=0.123456
std::string s=atof(f);
</code></pre>
<p>long double - bracuht man das überhaupt?!</p>
<p>danke <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/287798/zu-std-string-konvertieren</link><generator>RSS for Node</generator><lastBuildDate>Thu, 20 Aug 2026 06:02:18 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/287798.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 04 Jun 2011 11:35:35 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zu std::string konvertieren on Sat, 04 Jun 2011 11:35:35 GMT]]></title><description><![CDATA[<p>Hi, hab ne frage zu den datentypen:</p>
<p>char - ist klar</p>
<pre><code class="language-cpp">char c='C';
std::string s(c);
</code></pre>
<p>short - wie?</p>
<p>int - klar</p>
<pre><code class="language-cpp">int i=1;
std::string s=atoi(i);
</code></pre>
<p>long - klar</p>
<pre><code class="language-cpp">long l=4 /*Was ist denn eine gute Benutzung für long? Hex-Zahlen?*/
std::string s=atol(l);
</code></pre>
<p>float - wie? (auch atof()?)</p>
<p>double - klar</p>
<pre><code class="language-cpp">float f=0.123456
std::string s=atof(f);
</code></pre>
<p>long double - bracuht man das überhaupt?!</p>
<p>danke <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2073201</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2073201</guid><dc:creator><![CDATA[Short]]></dc:creator><pubDate>Sat, 04 Jun 2011 11:35:35 GMT</pubDate></item><item><title><![CDATA[Reply to Zu std::string konvertieren on Sat, 04 Jun 2011 11:40:52 GMT]]></title><description><![CDATA[<p>Bitte nutze <code>atoi</code> , <code>atof</code> und Konsorten nicht. In C++ gibt es leistungsstarke Stringstreams:</p>
<pre><code class="language-cpp">std::stringstream Buffer;
Buffer &lt;&lt; //Alles was du auch über std::cout ausgeben kannst
std::string Result(Buffer.str());
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2073203</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2073203</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Sat, 04 Jun 2011 11:40:52 GMT</pubDate></item><item><title><![CDATA[Reply to Zu std::string konvertieren on Sat, 04 Jun 2011 11:46:14 GMT]]></title><description><![CDATA[<p>atoi()<br />
atof()<br />
etc.<br />
Funktionieren nicht so wie du dir das vorstellst oO</p>
<p>Siehe dir doch noch mal<br />
<a href="http://www.cplusplus.com/reference/clibrary/cstdlib/atoi/" rel="nofollow">http://www.cplusplus.com/reference/clibrary/cstdlib/atoi/</a><br />
an <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/2073206</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2073206</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Sat, 04 Jun 2011 11:46:14 GMT</pubDate></item><item><title><![CDATA[Reply to Zu std::string konvertieren on Sat, 04 Jun 2011 12:01:35 GMT]]></title><description><![CDATA[<p>Oh danke, wollte eigentlich bezüglich der konvertierung VON std::string fragen...<br />
sprich es müsste heißen:</p>
<p>int</p>
<pre><code class="language-cpp">std::string s = &quot;1&quot;;
int i = atoi(s)
</code></pre>
<p>long</p>
<pre><code class="language-cpp">std::string s = &quot;0x7FFFFF&quot;; /*Hex Zahlen bei long?!*/
int l = atol(s)
</code></pre>
<p>double</p>
<pre><code class="language-cpp">std::string s = &quot;0.12345678901234&quot;;
double d = atof(s);
</code></pre>
<p>Hatte ursprünglich auch die stringstream variante und dann eben eine funktion, die mir den veränderten string zurückgibt, allerdings wollte ich das nach möglichkeit in einem einzeiler machen, deswegen habe ich auf atof, atoi etc. zurück gegriffen..<br />
Aber wenn das unsinnig wird, werde ich wieder an die stringstream variante gehen; eine frage allerdings noch (s.o.) ich habe den datentyp long so noch nie genutzt, benutzt man long um hex zahlen auszugeben`?!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2073213</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2073213</guid><dc:creator><![CDATA[Short]]></dc:creator><pubDate>Sat, 04 Jun 2011 12:01:35 GMT</pubDate></item><item><title><![CDATA[Reply to Zu std::string konvertieren on Sat, 04 Jun 2011 12:02:33 GMT]]></title><description><![CDATA[<p>Grml, weiß nicht wo mir heut der kopf steht...</p>
<pre><code class="language-cpp">std::string s = &quot;0x7FFFFF&quot;; /*Hex Zahlen bei long?!*/
long l = atol(s)
</code></pre>
<p>....</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2073214</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2073214</guid><dc:creator><![CDATA[Short]]></dc:creator><pubDate>Sat, 04 Jun 2011 12:02:33 GMT</pubDate></item><item><title><![CDATA[Reply to Zu std::string konvertieren on Sat, 04 Jun 2011 12:15:14 GMT]]></title><description><![CDATA[<p>Short schrieb:</p>
<blockquote>
<p>... benutzt man long um hex zahlen auszugeben`?!</p>
</blockquote>
<p>Datentyp und Schreibweise sind zwei Paar Schuhe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2073223</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2073223</guid><dc:creator><![CDATA[Caligulaminus]]></dc:creator><pubDate>Sat, 04 Jun 2011 12:15:14 GMT</pubDate></item><item><title><![CDATA[Reply to Zu std::string konvertieren on Sat, 04 Jun 2011 12:23:54 GMT]]></title><description><![CDATA[<p>Short schrieb:</p>
<blockquote>
<p>...eine frage allerdings noch (s.o.) ich habe den datentyp long so noch nie genutzt, benutzt man long um hex zahlen auszugeben`?!</p>
</blockquote>
<p>Der Datentyp hat nicht wirklich etwas mit dem Zahlensystem zu tun, mit dem du den Zahlenwert darstellt.</p>
<p>Ob du nun</p>
<pre><code>16       - dezimal
10000    - binaer
020      - octal
0x10     - hexadezimal
</code></pre>
<p>schreibst, ist ziemlich egal, es handelt sich immer um den gleichen Zahlenwert.</p>
<p>Also sind</p>
<pre><code class="language-cpp">long l1 = 16l;
long l2 = 0x10l;
</code></pre>
<p>äquivalent.</p>
<p>long und int können, abhängig vom verwendeten System, unterschiedliche Wertebereiche haben. Auf einem 16bit System ist int üblicherweise 2byte gross und long 4byte, auf einem 32bit System sind beide 4byte gross (gleicher Wertebereich). Auf 64bit Systemen könnte long wieder einen grösseren Wertebereich haben als int.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2073231</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2073231</guid><dc:creator><![CDATA[inter2k3]]></dc:creator><pubDate>Sat, 04 Jun 2011 12:23:54 GMT</pubDate></item><item><title><![CDATA[Reply to Zu std::string konvertieren on Sat, 04 Jun 2011 12:41:37 GMT]]></title><description><![CDATA[<p>Konvertierungen dieser Art lassen sich ziemlich einfach durch eine Funktionsvorlage erschlagen:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;sstream&gt;
#include &lt;typeinfo&gt;

template&lt;typename target_t, typename source_t&gt;
target_t convert(source_t const &amp;src) {
  target_t result;
  std::stringstream converter;

  converter &lt;&lt; src;
  converter &gt;&gt; result;

  if(!converter) throw std::bad_cast();

  return result;
}

int main() {
  std::cout &lt;&lt; convert&lt;int&gt;(&quot;123&quot;) * 2 &lt;&lt; std::endl; // 246
  std::cout &lt;&lt; convert&lt;int&gt;(&quot;abc&quot;);                  // wirft std::bad_cast
}
</code></pre>
<p>Vorsicht ist dabei im Umgang mit Zeigern und Referenzen geboten - convert&lt;char*&gt;(123) beispielsweise erzeugt undefiniertes Verhalten, ebenso die Rückgabe von Referenzen. Womöglich wäre es sinnvoll, diese gleich zur Compilezeit auszusortieren:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;sstream&gt;
#include &lt;typeinfo&gt;

template&lt;typename T&gt; struct assert_direct_type { typedef T type; };
template&lt;typename T&gt; struct assert_direct_type&lt;T*&gt; { };
template&lt;typename T&gt; struct assert_direct_type&lt;T&amp;&gt; { };

template&lt;typename target_t, typename source_t&gt;
target_t convert(source_t const &amp;src) {
  typename assert_direct_type&lt;target_t&gt;::type result;
  std::stringstream converter;

  converter &lt;&lt; src;
  converter &gt;&gt; result;

  if(!converter) throw std::bad_cast();

  return result;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2073242</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2073242</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Sat, 04 Jun 2011 12:41:37 GMT</pubDate></item><item><title><![CDATA[Reply to Zu std::string konvertieren on Mon, 06 Jun 2011 13:42:33 GMT]]></title><description><![CDATA[<p>Oder man benutzt boost::lexical_cast, wenn man kann und darf.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2074010</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2074010</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Mon, 06 Jun 2011 13:42:33 GMT</pubDate></item><item><title><![CDATA[Reply to Zu std::string konvertieren on Mon, 06 Jun 2011 18:01:27 GMT]]></title><description><![CDATA[<p>Ab C++0x hat man zudem <code>std::to_string()</code> zur Verfügung.</p>
<p>(Wird auch allerhöchste Zeit...)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2074199</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2074199</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 06 Jun 2011 18:01:27 GMT</pubDate></item><item><title><![CDATA[Reply to Zu std::string konvertieren on Mon, 06 Jun 2011 18:05:45 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Ab C++0x hat man zudem <code>std::to_string()</code> zur Verfügung.</p>
<p>(Wird auch allerhöchste Zeit...)</p>
</blockquote>
<p>Wow, das ist ja cool <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /><br />
Wieder ein tolles neues Feature von C++0x kennengelernt, dankeschön!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2074203</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2074203</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Mon, 06 Jun 2011 18:05:45 GMT</pubDate></item></channel></rss>