<?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[Datei binär einlesen (incl mehrerer Stringterminatoren) und in string wandeln]]></title><description><![CDATA[<p>Hi,</p>
<p>nachfolgender Code liest eine Datei binär ein. Nun möchte ich die Daten gern in einen String umwandeln, jedoch wird beim Auslesen von memblock logischerweise beim ersten Nullterminator abgebrochen. Wie stelle ich es nun an, dass das Array der Länge size komplett (trotz mehrerer /x00 ) in den String geschrieben wird?</p>
<pre><code class="language-cpp">char * memblock;
    int size;
    fstream f(pathNfile, ios::in|ios::binary|ios::ate);

    // größe der datei ermitteln
    size = f.tellg();
    //printf (&quot;%i\n&quot;, size);

    // datei einlesen
    memblock = new char [size];
    f.seekg (0, ios::beg);
    f.read (memblock, size);
    f.close();
    string memStr(memblock);
</code></pre>
<p>merci <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/303905/datei-binär-einlesen-incl-mehrerer-stringterminatoren-und-in-string-wandeln</link><generator>RSS for Node</generator><lastBuildDate>Mon, 10 Aug 2026 04:48:19 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/303905.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 24 May 2012 21:49:08 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Datei binär einlesen (incl mehrerer Stringterminatoren) und in string wandeln on Thu, 24 May 2012 21:49:08 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>nachfolgender Code liest eine Datei binär ein. Nun möchte ich die Daten gern in einen String umwandeln, jedoch wird beim Auslesen von memblock logischerweise beim ersten Nullterminator abgebrochen. Wie stelle ich es nun an, dass das Array der Länge size komplett (trotz mehrerer /x00 ) in den String geschrieben wird?</p>
<pre><code class="language-cpp">char * memblock;
    int size;
    fstream f(pathNfile, ios::in|ios::binary|ios::ate);

    // größe der datei ermitteln
    size = f.tellg();
    //printf (&quot;%i\n&quot;, size);

    // datei einlesen
    memblock = new char [size];
    f.seekg (0, ios::beg);
    f.read (memblock, size);
    f.close();
    string memStr(memblock);
</code></pre>
<p>merci <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/2215155</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2215155</guid><dc:creator><![CDATA[Klausihorst]]></dc:creator><pubDate>Thu, 24 May 2012 21:49:08 GMT</pubDate></item><item><title><![CDATA[Reply to Datei binär einlesen (incl mehrerer Stringterminatoren) und in string wandeln on Thu, 24 May 2012 21:58:40 GMT]]></title><description><![CDATA[<p>verdammt... es ist schon spät.</p>
<p>die Lösung:</p>
<pre><code class="language-cpp">string memStr(memblock,size);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2215158</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2215158</guid><dc:creator><![CDATA[Klausihorst]]></dc:creator><pubDate>Thu, 24 May 2012 21:58:40 GMT</pubDate></item><item><title><![CDATA[Reply to Datei binär einlesen (incl mehrerer Stringterminatoren) und in string wandeln on Thu, 24 May 2012 22:22:50 GMT]]></title><description><![CDATA[<p>Oder doch lieber gleich:</p>
<pre><code class="language-cpp">std::string s(std::istreambuf_iterator&lt;char&gt;(f), std::istreambuf_iterator&lt;char&gt;());
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2215161</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2215161</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Thu, 24 May 2012 22:22:50 GMT</pubDate></item><item><title><![CDATA[Reply to Datei binär einlesen (incl mehrerer Stringterminatoren) und in string wandeln on Fri, 25 May 2012 07:59:23 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>Oder doch lieber gleich:</p>
<pre><code class="language-cpp">std::string s(std::istreambuf_iterator&lt;char&gt;(f), std::istreambuf_iterator&lt;char&gt;());
</code></pre>
</blockquote>
<p>Das hat zwar die gleiche Wirkung, macht jedoch intern was anderes. Wird dadurch deutlich lahmer sein, falls dies hier eine Rolle spielt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2215241</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2215241</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 25 May 2012 07:59:23 GMT</pubDate></item><item><title><![CDATA[Reply to Datei binär einlesen (incl mehrerer Stringterminatoren) und in string wandeln on Fri, 25 May 2012 11:02:24 GMT]]></title><description><![CDATA[<p>Pffffff, eleganter, kurzer Code ist viel besser.<br />
Abgesehen davon würde ich das holen der Größe in eine eigene Funktion auslagern:</p>
<pre><code class="language-cpp">std::size_t filesize(std::ifstream&amp; is)
{
    auto const curr = is.tellg();
    is.seekg(std::ios::end);
    auto const size = is.tellg();
    is.seekg(curr);
    return size;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2215327</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2215327</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Fri, 25 May 2012 11:02:24 GMT</pubDate></item></channel></rss>