<?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[komplette Datei -&amp;gt; Char-Array]]></title><description><![CDATA[<p>ich will einfach nur den gesamten Inhalt einer Datei in einem Char-Array speichern<br />
aber egal wie ichs probier, es ist immer der Wurm drin</p>
<p>ich habs mal so probiert:</p>
<pre><code class="language-cpp">ifstream in(argv[2], ios::binary | ios::in);
char buffer2[1];
char buffer3[1];
int size = 0;
while(true)
{
 buffer3 = buffer2;
 buffer2[size+1];
 buffer2 = buffer3;
 in.read(buffer3, 1);
 if(in.eof())break;
 buffer2[size] = buffer3[0];
 size++;
}
in.close();
printf(&quot;Inhalt der Datei %s:\n\n&quot;, argv[2]);
printf(buffer2);
</code></pre>
<p>aber komischwerweiße funktioniert das nur bei manchen Dateien<br />
bei den anderen fehlt das Ende, aber ich hab nicht die geringste Ahnung warum</p>
<p>gibts vielleicht irgendeine viel einfachere Lösung für mein Problem?<br />
überall nur Funktionen die ein Zeichen oder eine Zeile lesen</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/133093/komplette-datei-gt-char-array</link><generator>RSS for Node</generator><lastBuildDate>Thu, 27 Aug 2026 19:04:34 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/133093.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 15 Jan 2006 13:54:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to komplette Datei -&amp;gt; Char-Array on Sun, 15 Jan 2006 13:54:40 GMT]]></title><description><![CDATA[<p>ich will einfach nur den gesamten Inhalt einer Datei in einem Char-Array speichern<br />
aber egal wie ichs probier, es ist immer der Wurm drin</p>
<p>ich habs mal so probiert:</p>
<pre><code class="language-cpp">ifstream in(argv[2], ios::binary | ios::in);
char buffer2[1];
char buffer3[1];
int size = 0;
while(true)
{
 buffer3 = buffer2;
 buffer2[size+1];
 buffer2 = buffer3;
 in.read(buffer3, 1);
 if(in.eof())break;
 buffer2[size] = buffer3[0];
 size++;
}
in.close();
printf(&quot;Inhalt der Datei %s:\n\n&quot;, argv[2]);
printf(buffer2);
</code></pre>
<p>aber komischwerweiße funktioniert das nur bei manchen Dateien<br />
bei den anderen fehlt das Ende, aber ich hab nicht die geringste Ahnung warum</p>
<p>gibts vielleicht irgendeine viel einfachere Lösung für mein Problem?<br />
überall nur Funktionen die ein Zeichen oder eine Zeile lesen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/967049</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/967049</guid><dc:creator><![CDATA[Nick H.]]></dc:creator><pubDate>Sun, 15 Jan 2006 13:54:40 GMT</pubDate></item><item><title><![CDATA[Reply to komplette Datei -&amp;gt; Char-Array on Sun, 15 Jan 2006 14:04:16 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">char buffer2[1];
char buffer3[1];
</code></pre>
<p>Was soll das? Du vergrößerst ein Array nicht dadurch, dass du einfach den Index vergrößerst. Du bewegst dich quasi in einem Minenfeld (in diesem Fall Speicher, der nicht dir gehört). Außerdem ist Arrayzuweisung doch eigentlich gar nicht definiert?! Wie wärs, wenn du einfach den ganzen Quatsch in einen std::string einliest, dann bekommst du mit c_str () was du willst (wofür auch immer).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/967055</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/967055</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Sun, 15 Jan 2006 14:04:16 GMT</pubDate></item><item><title><![CDATA[Reply to komplette Datei -&amp;gt; Char-Array on Sun, 15 Jan 2006 14:24:11 GMT]]></title><description><![CDATA[<p>Nick H. schrieb:</p>
<blockquote>
<p>ich will einfach nur den gesamten Inhalt einer Datei in einem Char-Array speichern<br />
aber egal wie ichs probier, es ist immer der Wurm drin ..<br />
gibts vielleicht irgendeine viel einfachere Lösung für mein Problem?</p>
</blockquote>
<p>Hallo Nick,</p>
<p>Ja - in C++ ist vieles ganz einfach, wenn man sich ein wenig mit der STL auskennt. Nutze statt eines Char-Arrays einfach den std::string. Dann könnte es so aussehen:</p>
<pre><code class="language-cpp">#include &lt;algorithm&gt;    // copy
#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;iterator&gt;     // istreambuf_iterator; back_inserter
#include &lt;string&gt;

int main( int argc, char* argv[] )
{  
    using namespace std;
    if( argc &lt; 3 ) return -1; // Parameter ncht angegeben

    string buffer;
    ifstream in( argv[2] );
    copy( istreambuf_iterator&lt; char &gt;( in ), istreambuf_iterator&lt; char &gt;(),
        back_inserter( buffer ) );
    // alle Zeichen aus der Datei stehen in 'buffer'

    return 0;
}
</code></pre>
<p>(Bem.: in der native STL von MS VC 6 ist kein string.push_back implementiert, dort übersetzt dieser Code nicht)</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/967074</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/967074</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Sun, 15 Jan 2006 14:24:11 GMT</pubDate></item><item><title><![CDATA[Reply to komplette Datei -&amp;gt; Char-Array on Sun, 15 Jan 2006 15:14:18 GMT]]></title><description><![CDATA[<p>danke ich werds mal so probieren<br />
benutze eh Dev-C++</p>
<p>edit:</p>
<p>funkt nich</p>
<p>erstmal findet er istreambuf_iterator nicht<br />
ich habs einfach mal durch istream_iterator ersetzt<br />
aber dann hagelt es fehlermeldungen</p>
<p>es muss doch irgendwo eine ganz einfache Möglichkeit geben<br />
aber ich such schon ewig bei Google...</p>
<p>edit:</p>
<pre><code class="language-cpp">so jetzt funktionierts schon fast:

std::string line;
std::string file;
std::ifstream ifs(argv[2]);
while(std::getline(ifs,line))
{
 file += line;
}
ifs.close();
</code></pre>
<p>nur sind alle meine Absätze weg <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /><br />
ich brauch aber jedes zeichen das in der Datei steht<br />
wie kann ich das erreichen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/967099</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/967099</guid><dc:creator><![CDATA[Nick H.]]></dc:creator><pubDate>Sun, 15 Jan 2006 15:14:18 GMT</pubDate></item><item><title><![CDATA[Reply to komplette Datei -&amp;gt; Char-Array on Sun, 15 Jan 2006 16:45:34 GMT]]></title><description><![CDATA[<p>Wenn du es wirklich mit einem char-Array machen willst, geht das z.B. so:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;fstream&gt;

int main()
{
    std::ifstream fin(&quot;file&quot;, std::ios::in|std::ios::binary);
    std::ios::pos_type start = fin.tellg();

    fin.seekg(0, std::ios::end);
    std::ios::pos_type end = fin.tellg();

    fin.seekg(0, std::ios::beg);

    const int SIZE = end - start;

    char* fcontent = new char[SIZE+1];

    fin.read(fcontent, SIZE);
    fcontent[SIZE] = '\0';

    // mach was...

    delete[] fcontent;
    return 0;

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/967291</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/967291</guid><dc:creator><![CDATA[michba]]></dc:creator><pubDate>Sun, 15 Jan 2006 16:45:34 GMT</pubDate></item><item><title><![CDATA[Reply to komplette Datei -&amp;gt; Char-Array on Sun, 15 Jan 2006 18:29:54 GMT]]></title><description><![CDATA[<p>Nick H. schrieb:</p>
<blockquote>
<p>funkt nich</p>
<p>erstmal findet er istreambuf_iterator nicht<br />
ich habs einfach mal durch istream_iterator ersetzt<br />
aber dann hagelt es fehlermeldungen</p>
<p>es muss doch irgendwo eine ganz einfache Möglichkeit geben</p>
</blockquote>
<p>Hallo Nick,</p>
<p>es gibt mehr als einen einfachen Weg. Versuch' mal das:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;string&gt;
#include &lt;sstream&gt;

int main( int argc, char* argv[] )
{  
    using namespace std;
    if( argc &lt; 3 ) return -1; // Parameter nicht angegeben

    stringstream strm;
    ifstream in( argv[2] );
    strm &lt;&lt; in.rdbuf();
    string buffer = strm.str();
    // alle Zeichen aus der Datei stehen in 'buffer'

    return 0;
}
</code></pre>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/967380</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/967380</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Sun, 15 Jan 2006 18:29:54 GMT</pubDate></item></channel></rss>