<?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[sprintf &#x2F; char* allgemeine fragen]]></title><description><![CDATA[<p>hallo,<br />
könnte mir jemand erklären was folgender Code macht?<br />
warum der cast auf (char*) und was bedeutet %02x konkret eigentlich?</p>
<pre><code class="language-cpp">string foo;
    foo.resize(6);
    sprintf((char*) &amp;foo[0], &quot;%02x%02x%02x&quot;, r, g, b);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/240104/sprintf-char-allgemeine-fragen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 22 Sep 2026 05:03:09 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/240104.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 01 May 2009 21:48:48 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to sprintf &#x2F; char* allgemeine fragen on Fri, 01 May 2009 21:48:48 GMT]]></title><description><![CDATA[<p>hallo,<br />
könnte mir jemand erklären was folgender Code macht?<br />
warum der cast auf (char*) und was bedeutet %02x konkret eigentlich?</p>
<pre><code class="language-cpp">string foo;
    foo.resize(6);
    sprintf((char*) &amp;foo[0], &quot;%02x%02x%02x&quot;, r, g, b);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1704282</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1704282</guid><dc:creator><![CDATA[cryps]]></dc:creator><pubDate>Fri, 01 May 2009 21:48:48 GMT</pubDate></item><item><title><![CDATA[Reply to sprintf &#x2F; char* allgemeine fragen on Fri, 01 May 2009 22:18:12 GMT]]></title><description><![CDATA[<p>cryps schrieb:</p>
<blockquote>
<p>warum der cast auf (char*) und was bedeutet %02x konkret eigentlich?</p>
<pre><code class="language-cpp">string foo;
    foo.resize(6);
    sprintf((char*) &amp;foo[0], &quot;%02x%02x%02x&quot;, r, g, b);
</code></pre>
</blockquote>
<p>%02x heißt &quot;hexadezimale Ausgabe, zweistellig, gegebenenfalls mit führenden nullen&quot;. r,g,b dürften demnach unsigned chars sein. Der cast auf char erfolgt weil sprintf eben einen char-pointer erwartet, vermutlich wird das benutzt um eventuelle const-ness wegzucasten.</p>
<p>Alles in allem ein ziemlich wüstes C-Konstrukt. Geht in C++ dann eher mit stringstreams:</p>
<pre><code class="language-cpp">stringstream sstr;
sstr &lt;&lt; setw(2) &lt;&lt; setfill('0') &lt;&lt; r &lt;&lt; g &lt;&lt; b;
string foo = sstr.str();
</code></pre>
<p>(ungetestet, daher ohne gewähr)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1704287</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1704287</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Fri, 01 May 2009 22:18:12 GMT</pubDate></item><item><title><![CDATA[Reply to sprintf &#x2F; char* allgemeine fragen on Fri, 01 May 2009 22:20:30 GMT]]></title><description><![CDATA[<p>herzlichen dank,<br />
werd ich ausprobieren</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1704288</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1704288</guid><dc:creator><![CDATA[cryps]]></dc:creator><pubDate>Fri, 01 May 2009 22:20:30 GMT</pubDate></item></channel></rss>