<?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[Auslesen mit fstram]]></title><description><![CDATA[<p>Hallo, ich habe ein Problem: ich möchte den &gt;&gt; operator zum file-einlesen überladen</p>
<p>eingelesen werden soll aus einer txt datei, undzwar eine undefinierte menge eines klassentyps Bank, jeder bank sind Konten (eigene klasse) zugeordnet die auf einem vektor gespeichert sind, jedes konto hat wiederum eine klasse person und jede person eine klasse datum.</p>
<p>Mein ansatz:</p>
<pre><code class="language-cpp">fstream &amp;operator&gt;&gt;(fstream &amp;FS, bank &amp;b) //Eingabe b von FS
{
	FS.open(&quot;temp.txt&quot;,ios::in);

	if(!FS.is_open())
	{cout&lt;&lt;&quot;Datei konnte nicht geöffnet werden!&quot;&lt;&lt;endl;cin.get();return FS;}
        //überprüfen ob lesbar

        //temporäre daten zum zwischenspeicher -&gt; zwischenlösung:

        char temp_n[80] , temp_v[80], dummy;
	double temp_b = 0.0;
	unsigned long temp_a = 0, temp_k = 0;
	int temp_d = 0, temp_m = 0, temp_y = 0;

	while(1)    /* in c hätt ich bis EOF eingelesen, habe aber keine lösung                              für c++*/
	{
		FS.getline(temp_n,80, '\n');
		FS.getline(temp_v,80, '\n');
		FS &gt;&gt;		temp_d;			FS.get(dummy);
		FS &gt;&gt;		temp_m;			FS.get(dummy);
		FS &gt;&gt;		temp_y;			FS.get(dummy);
		FS &gt;&gt;		temp_k;			FS.get(dummy);
		FS &gt;&gt;		temp_b;			FS.get(dummy); //nimmt '\n' auf

		Date    dat(temp_d, temp_m, temp_y); //hier erstelle ich temporäre klassen -&gt; sehe grade wäre oben sinnvoller
		person  pers(temp_n,temp_v, dat);
		konto   kont(pers, temp_k, temp_b);
		b += kont;
		//FS &gt;&gt; temp_n &gt;&gt; temp_v &gt;&gt; temp_d &gt;&gt; temp_m &gt;&gt; temp_y &gt;&gt; temp_k &gt;&gt; temp_b &gt;&gt; endl;
	}

	FS.close();
	return FS;
</code></pre>
<p>Ich hoffe das ich einigermaßen verstämdlich kommentiert habe.<br />
mir geht es in erster lienie um die while schleife, die aus der txt datei einlesen, und es perr überladenem += operator an den bankvektor anhängt</p>
<p>Weis jemand eine gescheite lösung?</p>
<p>Danke im voraus.</p>
<p>edit: in der textdatei sol es so stehen:</p>
<p>Name1<br />
Vorname1<br />
20 //tag<br />
1 //monat<br />
1980 //jahr<br />
1 //kontonr<br />
0.85 //kontobetrag<br />
Name2<br />
Vorname2<br />
20<br />
2<br />
1980<br />
2<br />
0.00<br />
/* .<br />
.<br />
.<br />
.<br />
usw */</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/217621/auslesen-mit-fstram</link><generator>RSS for Node</generator><lastBuildDate>Sat, 10 Oct 2026 11:02:18 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/217621.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 09 Jul 2008 11:39:08 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Auslesen mit fstram on Wed, 09 Jul 2008 11:45:26 GMT]]></title><description><![CDATA[<p>Hallo, ich habe ein Problem: ich möchte den &gt;&gt; operator zum file-einlesen überladen</p>
<p>eingelesen werden soll aus einer txt datei, undzwar eine undefinierte menge eines klassentyps Bank, jeder bank sind Konten (eigene klasse) zugeordnet die auf einem vektor gespeichert sind, jedes konto hat wiederum eine klasse person und jede person eine klasse datum.</p>
<p>Mein ansatz:</p>
<pre><code class="language-cpp">fstream &amp;operator&gt;&gt;(fstream &amp;FS, bank &amp;b) //Eingabe b von FS
{
	FS.open(&quot;temp.txt&quot;,ios::in);

	if(!FS.is_open())
	{cout&lt;&lt;&quot;Datei konnte nicht geöffnet werden!&quot;&lt;&lt;endl;cin.get();return FS;}
        //überprüfen ob lesbar

        //temporäre daten zum zwischenspeicher -&gt; zwischenlösung:

        char temp_n[80] , temp_v[80], dummy;
	double temp_b = 0.0;
	unsigned long temp_a = 0, temp_k = 0;
	int temp_d = 0, temp_m = 0, temp_y = 0;

	while(1)    /* in c hätt ich bis EOF eingelesen, habe aber keine lösung                              für c++*/
	{
		FS.getline(temp_n,80, '\n');
		FS.getline(temp_v,80, '\n');
		FS &gt;&gt;		temp_d;			FS.get(dummy);
		FS &gt;&gt;		temp_m;			FS.get(dummy);
		FS &gt;&gt;		temp_y;			FS.get(dummy);
		FS &gt;&gt;		temp_k;			FS.get(dummy);
		FS &gt;&gt;		temp_b;			FS.get(dummy); //nimmt '\n' auf

		Date    dat(temp_d, temp_m, temp_y); //hier erstelle ich temporäre klassen -&gt; sehe grade wäre oben sinnvoller
		person  pers(temp_n,temp_v, dat);
		konto   kont(pers, temp_k, temp_b);
		b += kont;
		//FS &gt;&gt; temp_n &gt;&gt; temp_v &gt;&gt; temp_d &gt;&gt; temp_m &gt;&gt; temp_y &gt;&gt; temp_k &gt;&gt; temp_b &gt;&gt; endl;
	}

	FS.close();
	return FS;
</code></pre>
<p>Ich hoffe das ich einigermaßen verstämdlich kommentiert habe.<br />
mir geht es in erster lienie um die while schleife, die aus der txt datei einlesen, und es perr überladenem += operator an den bankvektor anhängt</p>
<p>Weis jemand eine gescheite lösung?</p>
<p>Danke im voraus.</p>
<p>edit: in der textdatei sol es so stehen:</p>
<p>Name1<br />
Vorname1<br />
20 //tag<br />
1 //monat<br />
1980 //jahr<br />
1 //kontonr<br />
0.85 //kontobetrag<br />
Name2<br />
Vorname2<br />
20<br />
2<br />
1980<br />
2<br />
0.00<br />
/* .<br />
.<br />
.<br />
.<br />
usw */</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1544129</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544129</guid><dc:creator><![CDATA[schüler++ 0]]></dc:creator><pubDate>Wed, 09 Jul 2008 11:45:26 GMT</pubDate></item><item><title><![CDATA[Reply to Auslesen mit fstram on Wed, 09 Jul 2008 17:34:23 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/profile-var-mode-is-viewprofile-and-u-is-18363.html" rel="nofollow">Jochen Kalmbach</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-58.html" rel="nofollow">C++/CLI mit .NET</a> in das Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-15.html" rel="nofollow">C++</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39405.html" rel="nofollow">C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?</a></p>
<p><em>Dieses Posting wurde automatisch erzeugt.</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1544481</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544481</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Wed, 09 Jul 2008 17:34:23 GMT</pubDate></item><item><title><![CDATA[Reply to Auslesen mit fstram on Wed, 09 Jul 2008 17:45:43 GMT]]></title><description><![CDATA[<p>Also wenn du mit dem &gt;&gt; Operator arbeiten willst, übergibst du ja einen ostream. Musst daher also keinen mehr öffen (oder schliessen). Das wird ausserhalb gemacht.</p>
<pre><code class="language-cpp">fstream &amp;operator&gt;&gt;(fstream &amp;FS, bank &amp;b) //Eingabe b von FS
{
    FS &gt;&gt; b.name;
    FS &gt;&gt; b.vorname;
    FS &gt;&gt; b.tag;
    // usw.
    return FS; 
}
</code></pre>
<p>Dafür muss die Funktion friend von b sein.</p>
<p>Danach musst du nur noch wissen, wie viele Personen du in der Datei hast und dann einfach schön nacheinander einlesen. (Das machst du aber nicht mehr in dieser Funktion, sondern in der main, oder sonst wo)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1544492</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544492</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 09 Jul 2008 17:45:43 GMT</pubDate></item><item><title><![CDATA[Reply to Auslesen mit fstram on Wed, 09 Jul 2008 20:39:28 GMT]]></title><description><![CDATA[<p>nein, das ist nicht sinn meiner aufgabenstellung.<br />
der operator ist ohne friend umzusetzten.</p>
<p>meine frage zielte ja auf meine schleife, ich würde sie gern umsetzten ohne das mir die anzahl der konten in der datei bekannt ist.</p>
<p>das problem ist ja eben, das die anzahl dynamisch ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1544585</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544585</guid><dc:creator><![CDATA[schüler++ 0]]></dc:creator><pubDate>Wed, 09 Jul 2008 20:39:28 GMT</pubDate></item><item><title><![CDATA[Reply to Auslesen mit fstram on Wed, 09 Jul 2008 20:48:31 GMT]]></title><description><![CDATA[<p>schüler++ schrieb:</p>
<blockquote>
<p>nein, das ist nicht sinn meiner aufgabenstellung.<br />
der operator ist ohne friend umzusetzten.</p>
<p>meine frage zielte ja auf meine schleife, ich würde sie gern umsetzten ohne das mir die anzahl der konten in der datei bekannt ist.</p>
<p>das problem ist ja eben, das die anzahl dynamisch ist.</p>
</blockquote>
<p>Sorry, aber das ist so völliger Mist. <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 unbedingt das so einlesen willst, dann nenn die Funktion irgendwie read_bank, oder so, aber mach da keinen Operator &gt;&gt;. Das entspricht nicht dem Sinn davon.</p>
<p>Wenn du einen dynamische Anzahl hast, dann speichere sie einfach als ersten in der Datei und dann lies die zuerst ein, dann weisst du wieviel es sein sollen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1544589</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544589</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 09 Jul 2008 20:48:31 GMT</pubDate></item><item><title><![CDATA[Reply to Auslesen mit fstram on Wed, 09 Jul 2008 21:09:14 GMT]]></title><description><![CDATA[<p>ich glaube du verstehst mich nicht.(ich weis das das blöd ist,ist aber leider meine aufgabe - ansonsten wären auch andere alternativen denkbar)</p>
<p>und die daten sind bereits gegeben, da sie bereits in einer txt datei vorliegen, und mit dem überladenen operator eingelesen werden sollen (zu beginn meiner main)</p>
<p>die aufgabenstellung fand ich jetzt nur zu komplex um sie hier komplett reinzustellen.</p>
<p>ich setz mich ma nochma ran<br />
edit:Hab jetzt ne lösung gefunden</p>
<pre><code class="language-cpp">while(!FS.eof())
	{	
		FS &gt;&gt; temp_n; 
		FS &gt;&gt; temp_v; 
		FS &gt;&gt; temp_d;FS.get(dummy);
		FS &gt;&gt; temp_m;FS.get(dummy);
		FS &gt;&gt; temp_y;FS.get(dummy);
		FS &gt;&gt; temp_k;FS.get(dummy);
		FS &gt;&gt; temp_b;FS.get(dummy); //nimmt '\n' auf
		Date    dat(temp_d, temp_m, temp_y);
		person  pers(temp_n,temp_v, dat);
		konto   kont(pers, temp_k, temp_b);
		b += kont;
	}
</code></pre>
<p>muss nurnoch den &lt;&lt; operator anpassen und dan funst es <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>und die öffnung von FS (siehe erster pst) ist doch eigentlich richtig, da ich dem f stream, der ja von iostream abgeleitet ist noch sagen muss ob lesen oder schreiben.<br />
(sorry for missing context <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> )</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1544590</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544590</guid><dc:creator><![CDATA[schüler++ 0]]></dc:creator><pubDate>Wed, 09 Jul 2008 21:09:14 GMT</pubDate></item><item><title><![CDATA[Reply to Auslesen mit fstram on Wed, 09 Jul 2008 21:26:24 GMT]]></title><description><![CDATA[<p>schüler++ schrieb:</p>
<blockquote>
<p>und die öffnung von FS (siehe erster pst) ist doch eigentlich richtig, da ich dem f stream, der ja von iostream abgeleitet ist noch sagen muss ob lesen oder schreiben.<br />
(sorry for missing context <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> )</p>
</blockquote>
<p>Du misshandelst einfach den &gt;&gt; Operator.</p>
<p>Normalerweise erzeugst du einen Stream und benutzt dann die &lt;&lt; &gt;&gt; Operatoren, um ein/auszulesen. Öffnen/Schliessen passiert ausserhalb.</p>
<p>Du kannst sowieso auch gleich einen ifstream benutzen, anstatt eines fstream's<br />
<a href="http://www.cplusplus.com/reference/" rel="nofollow">http://www.cplusplus.com/reference/</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1544598</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544598</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 09 Jul 2008 21:26:24 GMT</pubDate></item><item><title><![CDATA[Reply to Auslesen mit fstram on Thu, 10 Jul 2008 08:56:21 GMT]]></title><description><![CDATA[<p>drakon schrieb:</p>
<blockquote>
<p>schüler++ schrieb:</p>
<blockquote>
<p>und die öffnung von FS (siehe erster pst) ist doch eigentlich richtig, da ich dem f stream, der ja von iostream abgeleitet ist noch sagen muss ob lesen oder schreiben.<br />
(sorry for missing context <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> )</p>
</blockquote>
<p>Du misshandelst einfach den &gt;&gt; Operator.</p>
<p>Normalerweise erzeugst du einen Stream und benutzt dann die &lt;&lt; &gt;&gt; Operatoren, um ein/auszulesen. Öffnen/Schliessen passiert ausserhalb.</p>
<p>Du kannst sowieso auch gleich einen ifstream benutzen, anstatt eines fstream's<br />
<a href="http://www.cplusplus.com/reference/" rel="nofollow">http://www.cplusplus.com/reference/</a></p>
</blockquote>
<p>ich sagte ja bereits: das ist vorgegeben. alle funtions und überladungsköpfe sollen so implementiert werden, wie sie gegeben sind(also in meiner aufgabe)</p>
<p>ich weis ich habe auch schon gelesen das man normalerweise den operator nicht für eine streamüberladung benutzt, aber was soll ich machen, is halt so gegeben, also suche ich eine lösung <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/1544792</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544792</guid><dc:creator><![CDATA[schüler++ 0]]></dc:creator><pubDate>Thu, 10 Jul 2008 08:56:21 GMT</pubDate></item></channel></rss>