<?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[Aus .txt Datei lesen]]></title><description><![CDATA[<p>Hallo, ich fang gerade an mich mit Datein zu beschäftigen, hier mal ein Beispiel. Ich hab eine Datei namens &quot;Hans.txt&quot; die sich in &quot;D:\&quot; befindet.<br />
In der Datei steht &quot;Hans Werner Olm&quot;.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;fstream&gt;
using namespace std;

int main()
{
    ifstream data(&quot;D:\\Hans.txt&quot;);
    char input[16];
    data.read(input,15);
    input[15]='\0'; // &lt;-- !!!
    cout &lt;&lt; input &lt;&lt; endl;

    return 0;
}
</code></pre>
<p>Wie man sieht hab ich das Nullzeichen selbst angefügt, muss man das immer selber anfügen, weil das is ja schon n bissel aufwendig, oder gibts vll. schon irgend eine Funktion die das für einene übernimmt, oder muss ich mir die einfach selber schreiben?<br />
Dankeschön schon mal im Voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/183918/aus-txt-datei-lesen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 23 Sep 2026 14:41:17 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/183918.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 10 Jun 2007 14:04:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Aus .txt Datei lesen on Sun, 10 Jun 2007 14:04:32 GMT]]></title><description><![CDATA[<p>Hallo, ich fang gerade an mich mit Datein zu beschäftigen, hier mal ein Beispiel. Ich hab eine Datei namens &quot;Hans.txt&quot; die sich in &quot;D:\&quot; befindet.<br />
In der Datei steht &quot;Hans Werner Olm&quot;.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;fstream&gt;
using namespace std;

int main()
{
    ifstream data(&quot;D:\\Hans.txt&quot;);
    char input[16];
    data.read(input,15);
    input[15]='\0'; // &lt;-- !!!
    cout &lt;&lt; input &lt;&lt; endl;

    return 0;
}
</code></pre>
<p>Wie man sieht hab ich das Nullzeichen selbst angefügt, muss man das immer selber anfügen, weil das is ja schon n bissel aufwendig, oder gibts vll. schon irgend eine Funktion die das für einene übernimmt, oder muss ich mir die einfach selber schreiben?<br />
Dankeschön schon mal im Voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1302491</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1302491</guid><dc:creator><![CDATA[Stromberg]]></dc:creator><pubDate>Sun, 10 Jun 2007 14:04:32 GMT</pubDate></item><item><title><![CDATA[Reply to Aus .txt Datei lesen on Sun, 10 Jun 2007 14:15:04 GMT]]></title><description><![CDATA[<p>die read-methode von ifstream ist für binärdaten gedacht. Wenn du Text auslesen willst kann du das mit Operator &gt;&gt; machen (wie bei cin) oder mit std::getline. Und speicher das ganze in std::string und nicht in char*</p>
<p>Gruß, Maxi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1302501</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1302501</guid><dc:creator><![CDATA[Maxi]]></dc:creator><pubDate>Sun, 10 Jun 2007 14:15:04 GMT</pubDate></item><item><title><![CDATA[Reply to Aus .txt Datei lesen on Sun, 10 Jun 2007 14:28:18 GMT]]></title><description><![CDATA[<p>Nächste Frage!<br />
Wie kann ich feststellen wieviel Zeichen eine Datei enthält?<br />
Bzw. mit welcher Funktione kann ich den Lesezeiger an das Ende der Datei positionieren.<br />
Dankeschön schon mal im Voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1302513</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1302513</guid><dc:creator><![CDATA[Stromberg]]></dc:creator><pubDate>Sun, 10 Jun 2007 14:28:18 GMT</pubDate></item><item><title><![CDATA[Reply to Aus .txt Datei lesen on Sun, 10 Jun 2007 14:37:15 GMT]]></title><description><![CDATA[<blockquote>
<p>Bzw. mit welcher Funktione kann ich den Lesezeiger an das Ende der Datei positionieren.</p>
</blockquote>
<p>std::ifstream::seekg(0, std::ios::end) müsste es sein ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1302521</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1302521</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Sun, 10 Jun 2007 14:37:15 GMT</pubDate></item><item><title><![CDATA[Reply to Aus .txt Datei lesen on Sun, 10 Jun 2007 14:54:25 GMT]]></title><description><![CDATA[<p>Ah thx (D)Evil, funktioniert prima.<br />
Aber für was ist die &quot;0&quot;, warum geht da nicht --&gt; std::ifstream::seekg(std::ios::end) [da wird der Lesezeiger dann beo mir an 2ter Stelle positioniert ]<br />
Was macht die &quot;0&quot;? Soll das heißen von anfang an? Aber der Lesezeiger ist doch sowieso schon auf Position 0 am anfang.... blick ich no net so ganz für was das argument sein soll.<br />
Dankeschön schon mal im Voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1302529</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1302529</guid><dc:creator><![CDATA[Stromberg]]></dc:creator><pubDate>Sun, 10 Jun 2007 14:54:25 GMT</pubDate></item><item><title><![CDATA[Reply to Aus .txt Datei lesen on Sun, 10 Jun 2007 15:03:03 GMT]]></title><description><![CDATA[<p>hmm du gibst damit an wie weit er vom Punkt std::ios::end seeken soll ... kannst ja auch von std::ios::cur um 10 nach vorne seeken udg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1302537</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1302537</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Sun, 10 Jun 2007 15:03:03 GMT</pubDate></item><item><title><![CDATA[Reply to Aus .txt Datei lesen on Sun, 10 Jun 2007 15:50:13 GMT]]></title><description><![CDATA[<p>Um mir die Arbeit zu erleicht hab ich mir eine Funktion &quot;file_input&quot; geschrieben die mir die Arbeit ein wenig erleichtert. Dann gibt es noch die Funktion &quot;file_volume&quot;, von welcher &quot;file_input&quot; gebrauch nimmt.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;fstream&gt;
using namespace std;

int file_volume(char *input);
void file_input(string &amp;file, char *input);

int main()
{
    string a;
    file_input(a,&quot;D:\\Hans.txt&quot;);
    cout &lt;&lt; a &lt;&lt; endl;

    return 0;
}

//Schreib in einen string den Inhalt einer Datei
void file_input(string &amp;file, char *input)
{
    int volume;
    //überprüfen ob file_volume kontak mit gültiger Datei hatte
    if(file_volume(input)==-1)
    {
        file=&quot;-1&quot;; //FALSE
        return;
    }
    else
    {
        volume=file_volume(input);
    }
    char *temp=new char(volume+1);
    ifstream data(input);
    //überprüfen ob kontakt mit gültiger datei hergestellt ist
    if(!data.is_open())
    {
        file=&quot;-1&quot;; //FALSE
        data.close();
        return;
    }
    data.read(temp,file_volume(input));
    temp[volume]='\0';
    data.close();
    file=temp;
    delete temp;
}

//Gibt die Anzahl der Zeichen zurück die eine Datei beinhaltet
inline int file_volume(char *input)
{
    int temp;
    ifstream data(input);
    if(!data.is_open())
    {
        return -1; //FALSE
    }
    data.seekg(0,ios::end);
    temp=data.tellg();
    data.close();
    return temp;
}
</code></pre>
<p>AUSGABE:</p>
<blockquote>
<p>Hans Werner Olm</p>
</blockquote>
<p>1. Was würdet ihr alles an meinem Code zu bemängeln bzw. zu verbessern haben? Tipps...<br />
2. Findet ihr das &quot;inline&quot; in Zeile 48 sinnvoll? Bringt das überhaupt was oder soll ichs weglassen?<br />
3. Was sagt ihr zu meinen Überprüfungen mit &quot;is_open&quot;? Würdet ihr das auch so machen? Und wie würdet ihr das bei der Funktion &quot;file_input&quot; machen, weil wenn es nicht geklappt hat dann wird in den string ja immer &quot;-1&quot; geschrieben, was ist aber bitte wenn in der Datei aus der &quot;file_input&quot; liest wirklich mal nur &quot;-1&quot; drinstehen sollte? Mhhh? Wie könnte ich das den anderst machen=</p>
<p>Dankeschön schon mal im Voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1302564</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1302564</guid><dc:creator><![CDATA[Stromberg]]></dc:creator><pubDate>Sun, 10 Jun 2007 15:50:13 GMT</pubDate></item><item><title><![CDATA[Reply to Aus .txt Datei lesen on Sun, 10 Jun 2007 16:18:02 GMT]]></title><description><![CDATA[<p>öhm das ist nicht gerade cream de la cream</p>
<pre><code class="language-cpp">inline std::size_t file_volume(std::ifstream&amp; strm)
{
	if (!strm)
		return 0;

	std::streampos cur = strm.tellg();
	strm.seekg(0, std::ios::beg);
	std::streampos beg = strm.tellg();
	strm.seekg(0, std::ios::end);
	std::size_t size = strm.tellg() - beg;
	strm.seekg(cur, std::ios::beg);
	return size;
}

bool file_input(const std::string&amp; file_name, std::string&amp; input_string)
{
	input_string = &quot;&quot;;
	std::ifstream file_stream(file_name.c_str(), std::ios::binary);
	if (!file_stream)
		return false;

	std::size_t file_size = file_volumn(file_stream);
	if (file_size == 0)
		return true;

	char* tmp = new char[file_size];
	file_stream.read(tmp, file_size);
    input_string = tmp;
	delete [] tmp;
	return true;
}
</code></pre>
<p>... somit öffnest du nur 1 mal die Datei ... rufst nur 1x file_volumn auf ... gibst den ARRAY tmp KORREKT frei usw ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1302580</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1302580</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Sun, 10 Jun 2007 16:18:02 GMT</pubDate></item><item><title><![CDATA[Reply to Aus .txt Datei lesen on Sun, 10 Jun 2007 16:27:18 GMT]]></title><description><![CDATA[<p>(D)Evil schrieb:</p>
<blockquote>
<pre><code class="language-cpp">input_string = &quot;&quot;;
</code></pre>
</blockquote>
<p>ich würde ein <strong>input_string.clear();</strong> vorziehen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1302584</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1302584</guid><dc:creator><![CDATA[lolz]]></dc:creator><pubDate>Sun, 10 Jun 2007 16:27:18 GMT</pubDate></item><item><title><![CDATA[Reply to Aus .txt Datei lesen on Sun, 10 Jun 2007 17:21:30 GMT]]></title><description><![CDATA[<p>Stromberg ne Frage: Von welcher Quelle lernst du eigentlich C++ ???<br />
Man sieht dich ja öfters hier, mit &quot;komischen&quot; Fragen. Ich glaube du brauchst nen gutes Buch um den roten Faden zu finden ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1302626</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1302626</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 10 Jun 2007 17:21:30 GMT</pubDate></item><item><title><![CDATA[Reply to Aus .txt Datei lesen on Sun, 10 Jun 2007 17:41:05 GMT]]></title><description><![CDATA[<p>Hmm, ne Textdatei einzulesen ist doch nen Einzeiler. Wieso der ganze Aufwand?</p>
<pre><code class="language-cpp">string read_file(string const&amp; fname)
{
    return dynamic_cast&lt;stringstream*&gt;(&amp;(stringstream() &lt;&lt; ifstream(fname.c_str()).rdbuf()))-&gt;str();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1302644</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1302644</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Sun, 10 Jun 2007 17:41:05 GMT</pubDate></item><item><title><![CDATA[Reply to Aus .txt Datei lesen on Sun, 10 Jun 2007 17:44:16 GMT]]></title><description><![CDATA[<p>hmm hab nur seine Funktionen verbessert bzw. korrigiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1302648</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1302648</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Sun, 10 Jun 2007 17:44:16 GMT</pubDate></item><item><title><![CDATA[Reply to Aus .txt Datei lesen on Sun, 10 Jun 2007 17:48:36 GMT]]></title><description><![CDATA[<p>Hab schon soviele Bücher aber die bringen alle nix, oder ich bin in irgend nem kapitel hängen geblieben...weil wirklich langweilig wurde, eigentlich hab ich mir jetzt vorgenommen, noch die ganzen String Funktionen zu lernen...weil ich mich da noch nicht auskenne, also z.B. wie man alles in Großbuchstaben umwandelt....<br />
Und danach wollte ich eigentlich das Buch &quot;Die C++ Standardbibliothek&quot; durchmachen, das hab ich mir vor einiger Zeit gekauft und es liegt halt in meinem Regal rum...ich hoff wenn ich mit dem fertig bin hab ich bisschen mehr Wissen.<br />
Und das mit den Datein mach ich eigentlich gerade nur um mal n kleines bisschen &quot;action&quot; reinzubringen, weil ich mach das jetzt echt schon lange (6 Moante sind untertrieben) komm aber irgendwie nicht auf nen grünen Zweig....weil ich wills zwar können aber irgendwie stell ich mich so an oder ich weiß nicht....und mir fällt eigentlch auch gerade gar nicht mehr ein was ich programmieren soll, weil alles ist so bock langweilig wenn man immer wieder das gleiche in der blöden schwarzen Konsole macht. Aber so &quot;macht's mich schon an&quot; wenn ich hier andere Beiträge lese...und dann denk ich mir wieder Augen zu und durch irgendwann wirst auchs du blicken --&gt; auch ein blindes Huhn findet mal ein Korn.<br />
So jetzt hab ich mal hier rumgelabbert und mein Herz ausgeschüttet ich mach trotzdem weiter mit der Sprache!!!<br />
Ich mein so schwierig kann C++ doch gar nicht sein? Ihr könnt es doch auch alle? Mh?<br />
Vll. liegts bei mir auch daran das ich mir von anfang an das falsche Lehrbuch gekauft habe --&gt; Jetzt lerne ich C++?<br />
Mh ach ich weiß auch nicht, und so schnell gebe ich noch nicht auf und ihr müsst euch weiter mit meinen komischen Fragen rumärgern.<br />
MfG<br />
Stromberg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1302650</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1302650</guid><dc:creator><![CDATA[Stromberg]]></dc:creator><pubDate>Sun, 10 Jun 2007 17:48:36 GMT</pubDate></item><item><title><![CDATA[Reply to Aus .txt Datei lesen on Sun, 10 Jun 2007 18:20:30 GMT]]></title><description><![CDATA[<p>Stromberg schrieb:</p>
<blockquote>
<p>Hab schon soviele Bücher aber die bringen alle nix, oder ich bin in irgend nem kapitel hängen geblieben...weil wirklich langweilig wurde, eigentlich hab ich mir jetzt vorgenommen, noch die ganzen String Funktionen zu lernen...weil ich mich da noch nicht auskenne, also z.B. wie man alles in Großbuchstaben umwandelt....<br />
Und danach wollte ich eigentlich das Buch &quot;Die C++ Standardbibliothek&quot; durchmachen, das hab ich mir vor einiger Zeit gekauft und es liegt halt in meinem Regal rum...ich hoff wenn ich mit dem fertig bin hab ich bisschen mehr Wissen.<br />
Und das mit den Datein mach ich eigentlich gerade nur um mal n kleines bisschen &quot;action&quot; reinzubringen, weil ich mach das jetzt echt schon lange (6 Moante sind untertrieben) komm aber irgendwie nicht auf nen grünen Zweig....weil ich wills zwar können aber irgendwie stell ich mich so an oder ich weiß nicht....und mir fällt eigentlch auch gerade gar nicht mehr ein was ich programmieren soll, weil alles ist so bock langweilig wenn man immer wieder das gleiche in der blöden schwarzen Konsole macht. Aber so &quot;macht's mich schon an&quot; wenn ich hier andere Beiträge lese...und dann denk ich mir wieder Augen zu und durch irgendwann wirst auchs du blicken --&gt; auch ein blindes Huhn findet mal ein Korn.<br />
So jetzt hab ich mal hier rumgelabbert und mein Herz ausgeschüttet ich mach trotzdem weiter mit der Sprache!!!<br />
Ich mein so schwierig kann C++ doch gar nicht sein? Ihr könnt es doch auch alle? Mh?<br />
Vll. liegts bei mir auch daran das ich mir von anfang an das falsche Lehrbuch gekauft habe --&gt; Jetzt lerne ich C++?<br />
Mh ach ich weiß auch nicht, und so schnell gebe ich noch nicht auf und ihr müsst euch weiter mit meinen komischen Fragen rumärgern.<br />
MfG<br />
Stromberg</p>
</blockquote>
<p>Hmmm, hört sich schon frustrierend an. Schon deine erste Frage hier, deutete darauf hin, das du irgendwas falsch lernst.</p>
<p>In jedem vernüftigen Tutorial, würdest du direkt lernen das ein getline(file,string) reichen würde um deinen &quot;Hans Werner Olm&quot; zu bekommen.</p>
<p>Oder einfach dreimal, genau wie bei cin, &gt;&gt; benutzen:</p>
<pre><code class="language-cpp">//umständlich, soll aber nur verdeutlichen
string a,b,c,name;
file &gt;&gt; a,b,c;
name = a + &quot; &quot; + b + &quot; &quot; + c;
/*
Wenn du willst das jmd dir über die Konsole &quot;Hans Werner Olm&quot; eingeben soll,
dann würdest du es ja auch so machen:
 file &gt;&gt; a,b,c;  
Du musst cin und die ifstream gleich sehen, nur die Quelle von der die Daten bezogen werden ist unterschiedlich. Einmal Tastatur, einmal Datei ... 
*/
</code></pre>
<p>Wesentlich einfach natürlich das:</p>
<pre><code class="language-cpp">string name = &quot;&quot;;
getline(file,name);
</code></pre>
<p>Das alles hat dir ja Maxi schon am Anfang vorgeschlagen.</p>
<p>So einfach kann das sein <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="😉"
    /></p>
<p>Wenn du jetzt eine ganze Datei einlesen willst, denkst du weiter:</p>
<pre><code class="language-cpp">//Mit getline lese ich mir ja eine Zeile aus
//Also muss ich jetzt, solange getline Machen bis es keine Zeilen mehr gibt

ifstream file(&quot;datei.txt&quot;);
if(!file) // return oder sonstwas
//oder if(file) schreiben und in { } mit der Datei arbeiten
/*
    if(file)
    {
       arbeiten mit datei
    }

*/

// Nun Zeilen auslesen, bis zum EOF
string fileText = &quot;&quot;; // Alles immer schön initalisieren 
while(!file.eof())
{
    string temp = &quot;&quot;;
    getline(file,temp);
    fileText += temp + &quot;\n&quot;;
}
// gesamter Dateiinhalt nun in fileText;
</code></pre>
<p>Nun spielen wir ja hier mit C++ und das alles ist noch nicht ganz so sicher.<br />
Das Problem ist das file.eof() gibt dir nur EOF zurück, wenn es mal eingelesen wurde. Das heißt eof() weiß nicht das gleich EOF kommen könnte.<br />
Demnach könnte unerwartetes passieren und wir EOF einlesen:</p>
<pre><code class="language-cpp">while(!file.eof())
{
    string temp = &quot;&quot;;
    getline(file,temp);
    // falls wir EOF einlesen sollten, dann raus aus schleife
    if(file.eof()) break;
    fileText += temp + &quot;\n&quot;;
}
</code></pre>
<p>Nun ist gut, aber es geht noch schöner:</p>
<pre><code class="language-cpp">string temp = &quot;&quot;;
while(getline(file,temp))
{
    fileText += temp + &quot;\n&quot;;
}
// getline liefert den stream wieder zurück
// also sieht das nach getline so aus: while(file)
// Dh wenn file ok ist läuft die Schleife und das ist es wenn zB nicht sowas wie EOF kommt
</code></pre>
<p>Natürlich gibt es noch Sachen wie copy und iteratoren die alles auf eine Zeile bringen:<br />
<a href="http://c-plusplus.net/forum/viewtopic-var-p-is-1280471.html#1280471" rel="nofollow">http://c-plusplus.net/forum/viewtopic-var-p-is-1280471.html#1280471</a><br />
Aber lass das erst mal und arbeite normal um alles zu verstehen.</p>
<p>Zu der Geschichte EOF gibts hier was schönes:<br />
<a href="http://fara.cs.uni-potsdam.de/~kaufmann/?page=GenCppFaqs&amp;faq=eof#Answ" rel="nofollow">http://fara.cs.uni-potsdam.de/~kaufmann/?page=GenCppFaqs&amp;faq=eof#Answ</a><br />
Zudem noch jede Menge anderer nützlicher Tipps.</p>
<p>So &quot;Der Anschlag&quot; läuft, muss los <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/1302661</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1302661</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 10 Jun 2007 18:20:30 GMT</pubDate></item><item><title><![CDATA[Reply to Aus .txt Datei lesen on Sun, 10 Jun 2007 21:25:14 GMT]]></title><description><![CDATA[<p>Also vielen Danke erst mal an dich KasF für deine lange Erklärung.<br />
Ich hab mich jetzt nochmal genau hingesetzt, und das von (D)Evil und von dir aufmerksam durchgelesn, bisschen rumprobiert, wieder euren Code angeschaut.... und ich bilde mir ein es nun verstanden zu haben. Das hier wäre mein Code:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;string&gt;
using namespace std;

int file_volume(ifstream &amp;stream);
bool file_input(string &amp;file,const string input) ;

int main()
{
    string buffer;
    file_input(buffer,&quot;D:\\Hans.txt&quot;);
    cout &lt;&lt; buffer &lt;&lt; endl;

    return 0;
}

int file_volume(ifstream &amp;stream)
{
    int temp;
    if(stream)
    {
        stream.seekg(ios::beg,ios::end);
        temp=stream.tellg();
        stream.seekg(ios::beg);
    }
    else
    {
        return 0;
    }
}

bool file_input(string &amp;file,const string input)
{
    ifstream data(input.c_str());
    string temp;
    while(getline(data,temp))
    {
        file=file+temp+&quot;\n&quot;;
    }
    if(file.length()!=file_volume(data))
    {
        data.close();
        return 0;
    }
    data.close();
    return 1;
}
</code></pre>
<p>Jetzt is es aber doch ganz in Ordnung, is ja so ähnlich wie euer Code?<br />
Das mit dem &quot;while(getline(data,temp))....&quot; was du mir erklärt hast KasF, ist natürlich schon n kleiner unterschied zu dem was ich gemacht habe <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="😃"
    /><br />
Dankeschön schon mal im Voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1302797</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1302797</guid><dc:creator><![CDATA[Stromberg]]></dc:creator><pubDate>Sun, 10 Jun 2007 21:25:14 GMT</pubDate></item><item><title><![CDATA[Reply to Aus .txt Datei lesen on Mon, 11 Jun 2007 12:13:53 GMT]]></title><description><![CDATA[<p>hmm ...</p>
<pre><code class="language-cpp">stream.seekg(ios::beg,ios::end);
</code></pre>
<p>... was soll das sein? Guck dir mal die genaue Deklaration von seekg an ... <a href="http://www.cppreference.com/cppio/seekg.html" rel="nofollow">http://www.cppreference.com/cppio/seekg.html</a></p>
<pre><code class="language-cpp">int file_volume(ifstream &amp;stream) // warum int? kann doch nur positiv lang sein ;) =&gt; std::size_t (meist das selbe wie unsigned int)
{
    int temp; // warum hier schon anlegen? Wird doch nur genutzt wenn stream geöffnet ist ...
    if(stream)
    {
        stream.seekg(ios::beg,ios::end); // s. o.
        temp=stream.tellg(); // hmm tellg sollte aber std::streampos und nicht int zurückgeben. 
        stream.seekg(ios::beg); // Und wenn du vorher nicht am Anfang der Datei warst?
    }
    else
    {
        return 0;
    }
}
</code></pre>
<p>...</p>
<pre><code class="language-cpp">bool file_input(string &amp;file,const string input)
{
    ifstream data(input.c_str()); 
    // und was ist wenn du die Datei nicht öffnen konntest? (!data)
    // Was ist wenn in file schon was drin steht?
    string temp;
    while(getline(data,temp))
    {
        file=file+temp+&quot;\n&quot;;
    }
    if(file.length()!=file_volume(data)) // wofür?!
    {
        data.close(); // unnötig ...
        return 0;
    }
    data.close(); // unnötig ...
    return 1;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1303075</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1303075</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Mon, 11 Jun 2007 12:13:53 GMT</pubDate></item><item><title><![CDATA[Reply to Aus .txt Datei lesen on Mon, 11 Jun 2007 12:38:59 GMT]]></title><description><![CDATA[<p>Zudem von (D)Evil noch. file_volume vergisst einmal was zurückzugeben <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="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1303106</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1303106</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 11 Jun 2007 12:38:59 GMT</pubDate></item><item><title><![CDATA[Reply to Aus .txt Datei lesen on Mon, 11 Jun 2007 18:42:13 GMT]]></title><description><![CDATA[<p>Joa, so gut isses anscheinend noch nicht, aber es ist besser als mein anfang.<br />
Zu dem hier noch:</p>
<pre><code class="language-cpp">if(file.length()!=file_volume(data)) // wofür?! 
    { 
        data.close(); // unnötig ... 
        return 0; 
    } 
    data.close(); // unnötig ... 
    return 1;
</code></pre>
<p>Ich will doch 0 zurückgeben wenn es fehlgeschlagen hat und 1 zurückgeben wenn es funktioniert hat? Aber vll. ist das von mir n bissel komisch umgesetzt worden?</p>
<blockquote>
<p>Was ist wenn in file schon was drin steht?</p>
</blockquote>
<p>Das ist doch egal oder? Dann wird das halt einfach überschrieben und es steht halt was neus drin?<br />
Dakeschön schon mal im Voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1303475</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1303475</guid><dc:creator><![CDATA[Stromberg]]></dc:creator><pubDate>Mon, 11 Jun 2007 18:42:13 GMT</pubDate></item><item><title><![CDATA[Reply to Aus .txt Datei lesen on Mon, 11 Jun 2007 19:59:23 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;string&gt;
using namespace std;

//int file_volume(ifstream &amp;stream);
bool file_input(string &amp;file,const string input) ;

int main()
{
    string buffer;
    file_input(buffer,&quot;D:\\Hans.txt&quot;);
    cout &lt;&lt; buffer &lt;&lt; endl;

    return 0;
}

/*size_t file_volume(ifstream &amp;stream)
{
    if(stream)
    {
        int temp;
        stream.seekg(ios::beg,ios::end);
        temp=stream.tellg();
        stream.seekg(ios::beg);
    }
    else
    {
        return -1;
    }
}*/

bool file_input(string &amp;file,const string input)
{
    ifstream data(input.c_str());
    if(data.is_open())
    {
        string temp;
        while(getline(data,temp))
        {
            file=file+temp+&quot;\n&quot;;
        }
        data.close();
        return 1;
    }
    return 0;
}
</code></pre>
<p>Wie is es so? Habs nochmal überdacht!<br />
eigentlich brauch ich jetzt die &quot;file_volume&quot; Funktion doch nicht mehr oder? Äh und was passt an meiner &quot;file_volume&quot; den nicht, die funktiuoniert doch prima? Wie funktioniert das den sonst mit dem &quot;seekg&quot;? Ich kann mit dem Link irgendwie nicht viel anfangen, da stand nicht grad viel drin...?<br />
Dankeschön schon mal im Voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1303562</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1303562</guid><dc:creator><![CDATA[Stromberg]]></dc:creator><pubDate>Mon, 11 Jun 2007 19:59:23 GMT</pubDate></item><item><title><![CDATA[Reply to Aus .txt Datei lesen on Mon, 11 Jun 2007 20:09:31 GMT]]></title><description><![CDATA[<p>Stromberg schrieb:</p>
<blockquote>
<pre><code class="language-cpp">bool file_input(string &amp;file,const string input)
{
    // …
        return 1;
    }
    return 0;
}
</code></pre>
</blockquote>
<p>Was soll eigentlich der Unsinn, '0' und '1' statt 'false' und 'true' zu benutzen?<br />
Und außerdem halte ich die Lösung mit 'getline' für absoluten Overkill, wenn es doch viel einfacher über einen Stream geht. Wir wollen schließlich keine Zeilen einlesen sondern die gesamte Datei. Wie ich bereits gepostet habe, geht das mit *einer Zeile*!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1303568</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1303568</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Mon, 11 Jun 2007 20:09:31 GMT</pubDate></item><item><title><![CDATA[Reply to Aus .txt Datei lesen on Mon, 11 Jun 2007 20:23:35 GMT]]></title><description><![CDATA[<p>Ah du hast da ja was gepostet, hab ich gar nicht gelesen:</p>
<pre><code class="language-cpp">string read_file(string const&amp; fname) 
{ 
    return dynamic_cast&lt;stringstream*&gt;(&amp;(stringstream() &lt;&lt; ifstream(fname.c_str()).rdbuf()))-&gt;str(); 
}
</code></pre>
<p>Ah mit einer Zeile ist das ja noch einfacher....bloß muss ich mir das erst noch ma genau anschauen, weil auf die schnell blick ich das jetzt nicht, und was ist den bite ein &quot;dynamic_cast&quot;?<br />
Und zu dem TRUE und FALSE noch, also ich hab irgendwo auf so einer Internetseite mal gelesen das es gar nicht gut sein soll &quot;TRUE&quot; und &quot;FALSE&quot; zu verwenden, des hat da irgendjemand gesagt..(vll. find ichs wieder).<br />
Aber eigentlich benutze ich auch immer TRUE und FALSE...weiß eiegtnlich auch nicht warum ich jetzt 1 und 0 genommen habe.<br />
Und was meinst du mit Overkill? Meinst damit das es zu lange dauert?<br />
Dankeschön schon mal im Voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1303574</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1303574</guid><dc:creator><![CDATA[Stromberg]]></dc:creator><pubDate>Mon, 11 Jun 2007 20:23:35 GMT</pubDate></item><item><title><![CDATA[Reply to Aus .txt Datei lesen on Mon, 11 Jun 2007 20:27:35 GMT]]></title><description><![CDATA[<p>Konrad Rudolph schrieb:</p>
<blockquote>
<pre><code class="language-cpp">string read_file(string const&amp; fname)
{
    return dynamic_cast&lt;stringstream*&gt;(&amp;(stringstream() &lt;&lt; ifstream(fname.c_str()).rdbuf()))-&gt;str();
}
</code></pre>
</blockquote>
<p>da ostream keine virtuelle basisklasse von stringstream ist, kannst du dir den dynamic_cast sogar sparen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1303578</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1303578</guid><dc:creator><![CDATA[queer_boy]]></dc:creator><pubDate>Mon, 11 Jun 2007 20:27:35 GMT</pubDate></item><item><title><![CDATA[Reply to Aus .txt Datei lesen on Mon, 11 Jun 2007 20:35:54 GMT]]></title><description><![CDATA[<p>Konrad Rudolph schrieb:</p>
<blockquote>
<p>Was soll eigentlich der Unsinn, '0' und '1' statt 'false' und 'true' zu benutzen?</p>
</blockquote>
<p>Was soll daran Unsinn sein ???</p>
<p>Konrad Rudolph schrieb:</p>
<blockquote>
<pre><code class="language-cpp">string read_file(string const&amp; fname)
{
    return dynamic_cast&lt;stringstream*&gt;(&amp;(stringstream() &lt;&lt; ifstream(fname.c_str()).rdbuf()))-&gt;str();
}
</code></pre>
</blockquote>
<p>Wenn du deine eine Zeile haben willst, dann lieber sowas:</p>
<pre><code class="language-cpp">string fileText = string(istreambuf_iterator&lt;char&gt;(file),istreambuf_iterator&lt;char&gt;());
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1303583</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1303583</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 11 Jun 2007 20:35:54 GMT</pubDate></item><item><title><![CDATA[Reply to Aus .txt Datei lesen on Mon, 11 Jun 2007 20:41:14 GMT]]></title><description><![CDATA[<p>queer_boy schrieb:</p>
<blockquote>
<p>Konrad Rudolph schrieb:</p>
<blockquote>
<pre><code class="language-cpp">string read_file(string const&amp; fname)
{
    return dynamic_cast&lt;stringstream*&gt;(&amp;(stringstream() &lt;&lt; ifstream(fname.c_str()).rdbuf()))-&gt;str();
}
</code></pre>
</blockquote>
<p>da ostream keine virtuelle basisklasse von stringstream ist, kannst du dir den dynamic_cast sogar sparen.</p>
</blockquote>
<p>Ne, kann ich nicht, denn 'operator&lt;&lt;' gibt mir nunmal keinen stringstream zurück sondern einen 'basic_ostream&lt;…&gt;'. Aber ein 'static_cast' reicht natürlich.</p>
<p>Stromberg schrieb:</p>
<blockquote>
<p>Und zu dem TRUE und FALSE noch, also ich hab irgendwo auf so einer Internetseite mal gelesen das es gar nicht gut sein soll &quot;TRUE&quot; und &quot;FALSE&quot; zu verwenden, des hat da irgendjemand gesagt..(vll. find ichs wieder).</p>
</blockquote>
<p>Stimmt auch, ich sprach aber von 'true' und 'false', nicht von 'TRUE' und 'FALSE'. 'true' und 'false' sind Bool-Konstanten, 1 und 0 hingegen sind Int-Konstante.</p>
<blockquote>
<p>Und was meinst du mit Overkill? Meinst damit das es zu lange dauert?</p>
</blockquote>
<p>Ich nehme an, dass es länger dauert aber das meinte ich nicht. Ich meinte, dass der Code einfach eine falsche Semantik vermittelt. Er suggeriert, dass hier Zeilen eingelesen werden. Overkill ist es deswegen, weil hier mehr Operationen stattfinden als nötig sind und das führt natürlich potentielle Fehlerquellen ein. Es widerspricht einfach dem Grundsatz, alles so einfach wie möglich zu halten.</p>
<p>Zu 'dynamic_cast': Hier wird zur Laufzeit geprüft, ob der Cast vollzogen werden kann. Sollte das nicht der Fall sein, wird 0 zurückgegeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1303588</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1303588</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Mon, 11 Jun 2007 20:41:14 GMT</pubDate></item><item><title><![CDATA[Reply to Aus .txt Datei lesen on Mon, 11 Jun 2007 20:47:06 GMT]]></title><description><![CDATA[<p>Konrad Rudolph schrieb:</p>
<blockquote>
<p>wird 0 zurückgegeben.</p>
</blockquote>
<p>Und die 0 landet dann im string und es macht *boom* <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>
<p>Konrad Rudolph schrieb:</p>
<blockquote>
<p>Ich nehme an, dass es länger dauert aber das meinte ich nicht. Ich meinte, dass der Code einfach eine falsche Semantik vermittelt. Er suggeriert, dass hier Zeilen eingelesen werden. Overkill ist es deswegen, weil hier mehr Operationen stattfinden als nötig sind und das führt natürlich potentielle Fehlerquellen ein. Es widerspricht einfach dem Grundsatz, alles so einfach wie möglich zu halten.</p>
</blockquote>
<p>Hättest es ja auch vorher so schreiben können <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="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1303592</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1303592</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 11 Jun 2007 20:47:06 GMT</pubDate></item><item><title><![CDATA[Reply to Aus .txt Datei lesen on Mon, 11 Jun 2007 20:50:38 GMT]]></title><description><![CDATA[<p>KasF schrieb:</p>
<blockquote>
<p>Konrad Rudolph schrieb:</p>
<blockquote>
<p>Was soll eigentlich der Unsinn, '0' und '1' statt 'false' und 'true' zu benutzen?</p>
</blockquote>
<p>Was soll daran Unsinn sein ???</p>
</blockquote>
<p>Es vermittelt eine falsche Semantik. Wozu gibt's denn verschiedene Typen? Wenn man die nicht benutzt, muss man auch nicht C++ programmieren, dann reicht eine Sprache ohne Typen.</p>
<blockquote>
<pre><code class="language-cpp">string fileText = string(istreambuf_iterator&lt;char&gt;(file),istreambuf_iterator&lt;char&gt;());
</code></pre>
</blockquote>
<p>Hm. Irgendwie hatte ich in Erinnerung, dass man hier erst ein Flag setzen müsste, damit Leerzeichen nicht überlesen werden.</p>
<p>Aber meine Methode ist schneller :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1303596</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1303596</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Mon, 11 Jun 2007 20:50:38 GMT</pubDate></item></channel></rss>