<?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[Ganze Textdatei auslesen Größe der Datei!=Anzahl der Zeichen, wenn Anzahl der Zeilen nicht 1??]]></title><description><![CDATA[<p>Schwer das ganze in einen Titel zu fassen.<br />
Also, erstmal hallo, ich lese eine ganze Textdatei ein.<br />
Scheinbar fehlt am Ende dann allerdings das Terminatorzeichen, kein Problem füg ich es einfach hinzu. Allerdings muss das Terminatorzeichen scheinbar an die Stelle Dateigröße - Anzahl Zeilen, ich versteh nicht so ganz warum?<br />
mein Code:</p>
<pre><code class="language-cpp">std::string filePath = static_cast&lt;std::string&gt;(static_cast&lt;bf::path&gt;(*fileiter).native_file_string());
      const char* ccfilePath = filePath.c_str();   //if anyone can tell me, why I need an extra filePath variable, DO IT!
      std::ifstream file(ccfilePath, std::ios::ate);
      int filesize = file.tellg();
      if(filesize &lt;= 0)
        filesize = 1;
      file.seekg(0);
      char* csource = new char[filesize + 1];
      file.read(csource, filesize);
      csource[filesize] = '\0';
      wxString source(csource);
      sources[fileList-&gt;GetItemText(fileNode)] = source;
      delete[] csource;
</code></pre>
<p>Ein paar Variablen werden euch hier nichts sagen, aber wichtig sind vor allem die letzten Zeilen.<br />
Äußern tut sich das so, dass am Ende des Textes bei einer Zeile kein Zeichen mehr steht, bei zwei Zeilen 1* Ì, bei drei Zeilen 2*Ì u.s.w. also der Datenmüll nimmt proportional zur Anzahl der Zeilen zu.<br />
Warum??</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/207098/ganze-textdatei-auslesen-größe-der-datei-anzahl-der-zeichen-wenn-anzahl-der-zeilen-nicht-1</link><generator>RSS for Node</generator><lastBuildDate>Sun, 11 Oct 2026 01:15:29 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/207098.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 03 Mar 2008 19:11:18 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Ganze Textdatei auslesen Größe der Datei!=Anzahl der Zeichen, wenn Anzahl der Zeilen nicht 1?? on Mon, 03 Mar 2008 19:11:18 GMT]]></title><description><![CDATA[<p>Schwer das ganze in einen Titel zu fassen.<br />
Also, erstmal hallo, ich lese eine ganze Textdatei ein.<br />
Scheinbar fehlt am Ende dann allerdings das Terminatorzeichen, kein Problem füg ich es einfach hinzu. Allerdings muss das Terminatorzeichen scheinbar an die Stelle Dateigröße - Anzahl Zeilen, ich versteh nicht so ganz warum?<br />
mein Code:</p>
<pre><code class="language-cpp">std::string filePath = static_cast&lt;std::string&gt;(static_cast&lt;bf::path&gt;(*fileiter).native_file_string());
      const char* ccfilePath = filePath.c_str();   //if anyone can tell me, why I need an extra filePath variable, DO IT!
      std::ifstream file(ccfilePath, std::ios::ate);
      int filesize = file.tellg();
      if(filesize &lt;= 0)
        filesize = 1;
      file.seekg(0);
      char* csource = new char[filesize + 1];
      file.read(csource, filesize);
      csource[filesize] = '\0';
      wxString source(csource);
      sources[fileList-&gt;GetItemText(fileNode)] = source;
      delete[] csource;
</code></pre>
<p>Ein paar Variablen werden euch hier nichts sagen, aber wichtig sind vor allem die letzten Zeilen.<br />
Äußern tut sich das so, dass am Ende des Textes bei einer Zeile kein Zeichen mehr steht, bei zwei Zeilen 1* Ì, bei drei Zeilen 2*Ì u.s.w. also der Datenmüll nimmt proportional zur Anzahl der Zeilen zu.<br />
Warum??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1467530</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1467530</guid><dc:creator><![CDATA[JustAnotherNoob]]></dc:creator><pubDate>Mon, 03 Mar 2008 19:11:18 GMT</pubDate></item><item><title><![CDATA[Reply to Ganze Textdatei auslesen Größe der Datei!=Anzahl der Zeichen, wenn Anzahl der Zeilen nicht 1?? on Mon, 03 Mar 2008 19:18:49 GMT]]></title><description><![CDATA[<p>Hmm sieht ja ekelig aus <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<pre><code class="language-cpp">const std::string file_path(static_cast&lt;std::string&gt;(static_cast&lt;bf::path&gt;(*fileiter).native_file_string()));

std::ifstream file_stream(file_path.c_str(), std::ios_base::app);

const std::streampos file_size(file_stream.tellg());
file_stream.seekg(0, std::ios_base::beg);

char* file_content(new char[file_size + 1]());
file_stream.read(file_content, file_size * sizeof(char));

sources[fileList-&gt;GetItemText(fileNode)] = wxString(file_content);
delete [] file_content;
</code></pre>
<p>... so in etwa ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1467535</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1467535</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Mon, 03 Mar 2008 19:18:49 GMT</pubDate></item><item><title><![CDATA[Reply to Ganze Textdatei auslesen Größe der Datei!=Anzahl der Zeichen, wenn Anzahl der Zeilen nicht 1?? on Mon, 03 Mar 2008 19:30:06 GMT]]></title><description><![CDATA[<blockquote>
<p>Hmm sieht ja ekelig aus</p>
</blockquote>
<p>danke :p</p>
<p>Dein Code funktioniert(nach gewissen Änderungen, std::streampos hat zu viele + überladungen, also int, und std::ios::ate muss schon sein), warum, was ist der Unterschied?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1467546</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1467546</guid><dc:creator><![CDATA[JustAnotherNoob]]></dc:creator><pubDate>Mon, 03 Mar 2008 19:30:06 GMT</pubDate></item><item><title><![CDATA[Reply to Ganze Textdatei auslesen Größe der Datei!=Anzahl der Zeichen, wenn Anzahl der Zeilen nicht 1?? on Mon, 03 Mar 2008 19:40:00 GMT]]></title><description><![CDATA[<p>Okay, ich habs.<br />
Gut zu wissen, dass die Klammern hinter new char[bla]() alles mit 0 initialisieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1467554</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1467554</guid><dc:creator><![CDATA[JustAnotherNoob]]></dc:creator><pubDate>Mon, 03 Mar 2008 19:40:00 GMT</pubDate></item><item><title><![CDATA[Reply to Ganze Textdatei auslesen Größe der Datei!=Anzahl der Zeichen, wenn Anzahl der Zeilen nicht 1?? on Tue, 04 Mar 2008 00:09:10 GMT]]></title><description><![CDATA[<p>JustAnotherNoob schrieb:</p>
<blockquote>
<p>Gut zu wissen, dass die Klammern hinter new char[bla]() alles mit 0 initialisieren.</p>
</blockquote>
<p>Das gilt für alle POD Datentypen <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="😉"
    /><br />
Die werden by default nämlich überhaupt nicht initialisiert, wenn man möchte das sie initialisiert werden (und deren c'tor aufgerufen wird) muss man den c'tor explict aufrufen, was man bei der erstellung eines arrays eben mit den klammern nach der dimensions angabe bewerkstelligt <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/1467673</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1467673</guid><dc:creator><![CDATA[evilissimo]]></dc:creator><pubDate>Tue, 04 Mar 2008 00:09:10 GMT</pubDate></item></channel></rss>