<?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[std::string Nullbyte ignorieren]]></title><description><![CDATA[<p>Ich versuche gerade die Daten aus einem char-Buffer in einen string umzuwandeln.<br />
Normal überhaupt kein Problem, nur diesmal ist irgendwo in dem char-Buffer ein Nullbyte hinter dem noch weitere Daten kommen.</p>
<p>Wenn ich jetzt das hier mache</p>
<pre><code class="language-cpp">std::string newstr(buffer)
</code></pre>
<p>... werden nur die Daten bis zum Nullbyte gelesen.<br />
Gibt es da eine Möglichkeit das Nullbyte zu ignorieren und einfach den kompletten buffer in den string zu kriegen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/306594/std-string-nullbyte-ignorieren</link><generator>RSS for Node</generator><lastBuildDate>Fri, 07 Aug 2026 16:40:18 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/306594.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 02 Aug 2012 09:49:38 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to std::string Nullbyte ignorieren on Thu, 02 Aug 2012 09:49:38 GMT]]></title><description><![CDATA[<p>Ich versuche gerade die Daten aus einem char-Buffer in einen string umzuwandeln.<br />
Normal überhaupt kein Problem, nur diesmal ist irgendwo in dem char-Buffer ein Nullbyte hinter dem noch weitere Daten kommen.</p>
<p>Wenn ich jetzt das hier mache</p>
<pre><code class="language-cpp">std::string newstr(buffer)
</code></pre>
<p>... werden nur die Daten bis zum Nullbyte gelesen.<br />
Gibt es da eine Möglichkeit das Nullbyte zu ignorieren und einfach den kompletten buffer in den string zu kriegen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2237860</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2237860</guid><dc:creator><![CDATA[needhelp_1]]></dc:creator><pubDate>Thu, 02 Aug 2012 09:49:38 GMT</pubDate></item><item><title><![CDATA[Reply to std::string Nullbyte ignorieren on Thu, 02 Aug 2012 09:57:41 GMT]]></title><description><![CDATA[<p>Mit dem Iteratorpaar-Konstrutktor:</p>
<pre><code class="language-cpp">std::string newstr(buffer, buffer+buflen);
</code></pre>
<p>/edit: oder so:</p>
<pre><code class="language-cpp">std::string newstr(buffer, buflen);
</code></pre>
<p>Gibt ja nicht nur den einen Konstruktor...<br />
<a href="http://www.cplusplus.com/reference/string/string/string/" rel="nofollow">http://www.cplusplus.com/reference/string/string/string/</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2237861</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2237861</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Thu, 02 Aug 2012 09:57:41 GMT</pubDate></item><item><title><![CDATA[Reply to std::string Nullbyte ignorieren on Thu, 02 Aug 2012 10:05:07 GMT]]></title><description><![CDATA[<p>Hm stimmt, hätte ich auch selber draufkommen können <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f623.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--persevering_face"
      title="&gt;.&lt;"
      alt="😣"
    /><br />
Aber was ist wenn ich den Konstruktor schon aufgerufen habe also:</p>
<pre><code class="language-cpp">std::string newstr;
char buffer[] = {'0', '1', '2', '\0', '3', '4'};
</code></pre>
<p>Und dann den gesamten buffer in den string.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2237865</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2237865</guid><dc:creator><![CDATA[needhelp_1]]></dc:creator><pubDate>Thu, 02 Aug 2012 10:05:07 GMT</pubDate></item><item><title><![CDATA[Reply to std::string Nullbyte ignorieren on Thu, 02 Aug 2012 10:10:46 GMT]]></title><description><![CDATA[<p>std::string hat eine Methode append. Hättest du auch selber drauf kommen können <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f623.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--persevering_face"
      title="&gt;.&lt;"
      alt="😣"
    /></p>
<p>btw: Du scheinst etwas in einen string (=Zeichenkette) stopfen zu wollen, was keine wirkliche Zeichenkette ist. Was willst du erreichen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2237866</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2237866</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Thu, 02 Aug 2012 10:10:46 GMT</pubDate></item><item><title><![CDATA[Reply to std::string Nullbyte ignorieren on Thu, 02 Aug 2012 10:12:58 GMT]]></title><description><![CDATA[<p>needhelp_1 schrieb:</p>
<blockquote>
<p>Hm stimmt, hätte ich auch selber draufkommen können <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f623.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--persevering_face"
      title="&gt;.&lt;"
      alt="😣"
    /><br />
Aber was ist wenn ich den Konstruktor schon aufgerufen habe also:</p>
<pre><code class="language-cpp">std::string newstr;
char buffer[] = {'0', '1', '2', '\0', '3', '4'};
</code></pre>
<p>Und dann den gesamten buffer in den string.</p>
</blockquote>
<p>Mit assign. Wieder gibt es viele Möglichkeiten, schau sie dir an:<br />
<a href="http://www.cplusplus.com/reference/string/string/assign/" rel="nofollow">http://www.cplusplus.com/reference/string/string/assign/</a><br />
(Je nachdem, was du genau erreichen möchtest auch append, insert oder eine der vielen anderen Methoden. Schau dir die Referenz von String mal komplett an)</p>
<p>Zwei kleine Anmerkungen:<br />
Willst du nicht lieber einen Vector statt einem String? Das klingt mir nach binären Rohdaten, nicht direkt nach Zeichenketten.<br />
Willst du diesen Vector (oder meinetwegen auch den String) nicht direkt als Buffer verwenden? Derzeit scheinst du sinnlos Daten hin und her zu schieben.</p>
<p>edit: Zu langsam.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2237867</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2237867</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 02 Aug 2012 10:12:58 GMT</pubDate></item><item><title><![CDATA[Reply to std::string Nullbyte ignorieren on Thu, 02 Aug 2012 10:17:08 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>std::string hat eine Methode append. Hättest du auch selber drauf kommen können <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f623.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--persevering_face"
      title="&gt;.&lt;"
      alt="😣"
    /></p>
</blockquote>
<p>Tut mir Leid.<br />
Ja ihr habt es geht viel einfacher, kommt davon wenn man zu wenig Schlaf hat.</p>
<pre><code class="language-cpp">const_cast&lt;char *&gt;(data.c_str())
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2237872</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2237872</guid><dc:creator><![CDATA[needhelp_1]]></dc:creator><pubDate>Thu, 02 Aug 2012 10:17:08 GMT</pubDate></item><item><title><![CDATA[Reply to std::string Nullbyte ignorieren on Thu, 02 Aug 2012 10:26:53 GMT]]></title><description><![CDATA[<p>needhelp_1 schrieb:</p>
<blockquote>
<pre><code class="language-cpp">const_cast&lt;char *&gt;(data.c_str())
</code></pre>
</blockquote>
<p>Was immer du damit sagen willst: Nein! Bloß nicht!</p>
<p>const_cast ist in erster Linie dazu da, Designfehler (fehlende const-correctness) in fremden Code zu beheben, den man nicht ändern kann. Die Standardbibliothek hat keine fehlende const-correctness! Es gibt Gründe, warum c_str() einen <strong>const</strong> char* zurück gibt!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2237877</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2237877</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 02 Aug 2012 10:26:53 GMT</pubDate></item></channel></rss>