<?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[problem mit fstream]]></title><description><![CDATA[<p>Also ich habe folgendes Problem:<br />
ich möchte eine datei auslesen und dann beschreiben können. dazu nehme ich ifstream und ofstream aus der klasse fstream.<br />
Nun habe ich using namespace std; oben angegeben. Dann sagte mein Compiler aber beim kompilierversuch:</p>
<blockquote>
<p>no matching function for call to `std::basic_ofstream&lt;char, std::char_traits&lt;char&gt; &gt;::open(std::string&amp;, const std::_Ios_Openmode&amp;)'</p>
</blockquote>
<p>Wo liegt mein Fehler?</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;fstream&gt;
using namespace std;
//Die Noten-Klasse
class noten
{
      public:
             int deutsch;
             int englisch;
             int mathe;
             int technik;
};
//Die Schüler-Klasse
class schueler
{
      public:
             string nachname;
             string vorname;
             string strasse;
             int plz;
             string ort;
             noten n;
};

int main(void)
{
    schueler a;
    char neu;
    do
    {
         //
         ifstream lesen;
         string dateiadresse;
         cout &lt;&lt; &quot;Bitte geben Sie die Adresse der Datei ein: &quot;;
         cin &gt;&gt; dateiadresse;
         lesen.open(dateiadresse.c_str());
         cout &lt;&lt; lesen.get();
         lesen.close();
         cout &lt;&lt; &quot;Nachname: &quot;;
         cin &gt;&gt; a.nachname;
         cout &lt;&lt; &quot;Deutsch-Note: &quot;;
         cin &gt;&gt; a.n.deutsch;

         //
         ofstream schreiben;
         schreiben.open(dateiadresse, ios_base::app);
         schreiben &lt;&lt; a.nachname;
         schreiben &lt;&lt; a.n.deutsch;
         schreiben.close();
         cout &lt;&lt; &quot;Moechten Sie einen weiteren Schueler hinzufuegen?&quot; &lt;&lt; endl 
              &lt;&lt; &quot;Antworten Sie bitte mit j fuer ja oder n fuer nein: &quot;;
         cin &gt;&gt; neu;
    }while(neu=='j');
    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/143794/problem-mit-fstream</link><generator>RSS for Node</generator><lastBuildDate>Wed, 02 Sep 2026 13:11:45 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/143794.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 11 Apr 2006 19:49:48 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to problem mit fstream on Tue, 11 Apr 2006 20:00:33 GMT]]></title><description><![CDATA[<p>Also ich habe folgendes Problem:<br />
ich möchte eine datei auslesen und dann beschreiben können. dazu nehme ich ifstream und ofstream aus der klasse fstream.<br />
Nun habe ich using namespace std; oben angegeben. Dann sagte mein Compiler aber beim kompilierversuch:</p>
<blockquote>
<p>no matching function for call to `std::basic_ofstream&lt;char, std::char_traits&lt;char&gt; &gt;::open(std::string&amp;, const std::_Ios_Openmode&amp;)'</p>
</blockquote>
<p>Wo liegt mein Fehler?</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;fstream&gt;
using namespace std;
//Die Noten-Klasse
class noten
{
      public:
             int deutsch;
             int englisch;
             int mathe;
             int technik;
};
//Die Schüler-Klasse
class schueler
{
      public:
             string nachname;
             string vorname;
             string strasse;
             int plz;
             string ort;
             noten n;
};

int main(void)
{
    schueler a;
    char neu;
    do
    {
         //
         ifstream lesen;
         string dateiadresse;
         cout &lt;&lt; &quot;Bitte geben Sie die Adresse der Datei ein: &quot;;
         cin &gt;&gt; dateiadresse;
         lesen.open(dateiadresse.c_str());
         cout &lt;&lt; lesen.get();
         lesen.close();
         cout &lt;&lt; &quot;Nachname: &quot;;
         cin &gt;&gt; a.nachname;
         cout &lt;&lt; &quot;Deutsch-Note: &quot;;
         cin &gt;&gt; a.n.deutsch;

         //
         ofstream schreiben;
         schreiben.open(dateiadresse, ios_base::app);
         schreiben &lt;&lt; a.nachname;
         schreiben &lt;&lt; a.n.deutsch;
         schreiben.close();
         cout &lt;&lt; &quot;Moechten Sie einen weiteren Schueler hinzufuegen?&quot; &lt;&lt; endl 
              &lt;&lt; &quot;Antworten Sie bitte mit j fuer ja oder n fuer nein: &quot;;
         cin &gt;&gt; neu;
    }while(neu=='j');
    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1035510</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1035510</guid><dc:creator><![CDATA[t1m0n]]></dc:creator><pubDate>Tue, 11 Apr 2006 20:00:33 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit fstream on Tue, 11 Apr 2006 20:15:33 GMT]]></title><description><![CDATA[<p>Dir fehlt der Methodenaufruf string::c_str().</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1035519</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1035519</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Tue, 11 Apr 2006 20:15:33 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit fstream on Tue, 11 Apr 2006 20:16:55 GMT]]></title><description><![CDATA[<p>t1m0n schrieb:</p>
<blockquote>
<p>Wo liegt mein Fehler?</p>
<pre><code class="language-cpp">//
         ofstream schreiben;
         schreiben.open(dateiadresse, ios_base::app);
         schreiben &lt;&lt; a.nachname;
         schreiben &lt;&lt; a.n.deutsch;
         schreiben.close();
         cout &lt;&lt; &quot;Moechten Sie einen weiteren Schueler hinzufuegen?&quot; &lt;&lt; endl 
              &lt;&lt; &quot;Antworten Sie bitte mit j fuer ja oder n fuer nein: &quot;;
         cin &gt;&gt; neu;
    }while(neu=='j');
    return 0;
}
</code></pre>
</blockquote>
<pre><code class="language-cpp">schreiben.open(dateiadresse.c_str(), ios_base::app);
</code></pre>
<p>'c_str()'.. so wie oben auch</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1035520</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1035520</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Tue, 11 Apr 2006 20:16:55 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit fstream on Wed, 12 Apr 2006 06:41:42 GMT]]></title><description><![CDATA[<p>Ich habe nun so umgeschrieben:</p>
<pre><code class="language-cpp">lesen.open(dateiadresse.string::c_str());
</code></pre>
<p>Aber nun verweist er auf die Zeile</p>
<pre><code class="language-cpp">schreiben.open(dateiadresse, ios_base::app);
</code></pre>
<p>und sagt:</p>
<pre><code class="language-cpp">no matching function for call to `std::basic_ofstream&lt;char, std::char_traits&lt;char&gt; &gt;::open(std::string&amp;, const std::_Ios_Openmode&amp;)'
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1035626</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1035626</guid><dc:creator><![CDATA[t1m0n]]></dc:creator><pubDate>Wed, 12 Apr 2006 06:41:42 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit fstream on Wed, 12 Apr 2006 06:34:44 GMT]]></title><description><![CDATA[<p>Was soll das denn für eine Konstruktion sein? Du benötigst ein einfaches</p>
<pre><code class="language-cpp">xxx.open(dateinadresse.c_str());
</code></pre>
<p>(beim Lesestream hattest du das bereits richtig, beim Schreibstream mußt du das noch korrigieren)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1035630</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1035630</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 12 Apr 2006 06:34:44 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit fstream on Wed, 12 Apr 2006 06:41:20 GMT]]></title><description><![CDATA[<p>wieso? wo meckerst du denn jetzt? open heißt ja nur laden, nicht ausgeben und das ios_base::app ist dafür da, dass ich die *.txt nicht überschreibe sondern den inhalt nur anhänge.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1035632</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1035632</guid><dc:creator><![CDATA[t1m0n]]></dc:creator><pubDate>Wed, 12 Apr 2006 06:41:20 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit fstream on Wed, 12 Apr 2006 06:46:33 GMT]]></title><description><![CDATA[<p>Ich sehe, du kennst dich aus ;). Allerdings erwartet open() den Dateinamen als char* und nicht als std::string<sup>*</sup> - deshalb mußt du deinen Dateinamen mit der Methode c_str() geeignet umwandeln. Der Aufruf &quot;lesen.open(...);&quot; in deinem Original-Quelltext war bereits richtig, wie der Aufruf &quot;schreiben.open(...);&quot; aussehen muß, hat Werner dir schon gesagt (lies dir seinen Beitrag nochmal durch und setze ihn um).</p>
<p><sup>*</sup> Wieso das so ist, weiß ich auch nicht genau, aber das Standardisierungskomitee wird schon seine Gründe gehabt haben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1035633</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1035633</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 12 Apr 2006 06:46:33 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit fstream on Wed, 12 Apr 2006 07:08:25 GMT]]></title><description><![CDATA[<p>Achso, ok <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="🙂"
    /> Hab ich wohl in Gedanken beim ofstream übersehen.<br />
Nun speichert er. Ich habe jetzt jeweils die werte:<br />
a2, b3 und d4<br />
gespeichert. Aber wenn ich die Datei auslese sagt er nur 97. Was ist mein Fehler nun?</p>
<p>Ich habe nun kurz die Zeile</p>
<pre><code class="language-cpp">cout &lt;&lt; lesen.get();
</code></pre>
<p>editiert und die &quot;Methode?&quot; get(); weggelassen. Dann spuckt er zwar mehr als zwei Zeichen aus aber in Hex glaube ich. Ähnelt einer Speicheradresse: 0x22fe84 (wobei x ja kein Hex-Wert sein kann) <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1035640</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1035640</guid><dc:creator><![CDATA[t1m0n]]></dc:creator><pubDate>Wed, 12 Apr 2006 07:08:25 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit fstream on Wed, 12 Apr 2006 07:09:37 GMT]]></title><description><![CDATA[<p>Du liest ja auch per get() nur ein einzelnes Zeichen aus der Datei aus - das ist das 'a' (= (char) 97). Wenn du den kompletten Dateiinhalt auslesen willst, benötigst du eine Schleife.</p>
<p>(btw, du solltest Trennzeichen zwischen die Namen und zugehörigen Noten setzen, das erleichter das Einlesen)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1035644</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1035644</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 12 Apr 2006 07:09:37 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit fstream on Wed, 12 Apr 2006 07:14:48 GMT]]></title><description><![CDATA[<p>Ok. Wie muss die Schleife gestalltet sein? Also soviele Wiederholungen wie Zeichen, aber woher weiß ich wieviele zeichen es sind?<br />
Trennzeichen wie Leerzeichen oder wie ein Semikolon? Ich habe gelesen, das man diese Semikolons bei CSV-Dateien häufig einsetzt um das später in Excel auszulesen..<br />
---<br />
Und mal eine generelle Frage:</p>
<pre><code class="language-cpp">class schueler
{
      public:
             string nachname;
             string vorname;
             string strasse;
             int plz;
             string ort;
             noten n;
};
</code></pre>
<p>Die Klasse heißt ja schueler und die objekte sind nachname und eine Funktion in einer Klasse heißt Methode. Und wie heißt nun der datensatz, den ich übergebe? Ist das das Element? Und was ist der Ausdruck für noten n; in diesem fall, weil noten ja eine eigene klasse ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1035647</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1035647</guid><dc:creator><![CDATA[t1m0n]]></dc:creator><pubDate>Wed, 12 Apr 2006 07:14:48 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit fstream on Wed, 12 Apr 2006 07:18:08 GMT]]></title><description><![CDATA[<p>Ich habe anhand der Fragestellung keine Ahnung was genau Du wissen willst aber ich versuchs trotzdem <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>Mit dem &quot;Element&quot;, meinst Du damit eine Instanz der Klasse? Dann nennt man das Objekt, oder Instanz.</p>
<pre><code class="language-cpp">schueler klaus; 
^klasse oder typ
         ^instanz oder objekt
</code></pre>
<p>Innerhalb der Klasse schueler gibt es ein Mitglied n, vom Typ noten (string ist übrigens auch ne Klasse, dasselbe gilt also für Nachname usw.)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1035650</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1035650</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 12 Apr 2006 07:18:08 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit fstream on Wed, 12 Apr 2006 07:19:15 GMT]]></title><description><![CDATA[<p>Du könntest statt get() lieber die formatierte Ein/Ausgabe verwenden:</p>
<pre><code class="language-cpp">while(lesen)
{
  schueler tmp;
  lesen&gt;&gt;tmp.name;
  lesen&gt;&gt;tmp.n.deutsch;
  cout&lt;&lt;tmp.name&lt;&lt;&quot; &quot;&lt;&lt;tmp.n.deutsch;
}
</code></pre>
<p>Und was du als Trennzeichen verwendest, bleibt dir überlassen - du mußt nur deine Einlese-Funktion so anpassen, daß sie dieses Trennzeichen erkennt (eine Möglichkeit wäre, Leerzeichen, '\t' oder ';' zur Trennung der einzelnen Elemente zu verwenden und '\n' zur Trennung der Datensätze)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1035652</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1035652</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 12 Apr 2006 07:19:15 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit fstream on Wed, 12 Apr 2006 07:21:25 GMT]]></title><description><![CDATA[<p>Das mit dem tmp verstehe ich nicht ganz..<br />
In wie fern ist das für die formatierung bzw. das einlesen oder schreiben verantwortlich?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1035654</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1035654</guid><dc:creator><![CDATA[t1m0n]]></dc:creator><pubDate>Wed, 12 Apr 2006 07:21:25 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit fstream on Wed, 12 Apr 2006 07:27:36 GMT]]></title><description><![CDATA[<p>tmp ist ein Objekt vom Typ &quot;schueler&quot; - dort kannst du alle eingelesenen Daten des Schülers zusammenfassen (nächste Steigerung des Codes wäre es übrigens, für &quot;schueler&quot; und &quot;noten&quot; einen eigenen operator&gt;&gt; und operator&lt;&lt; zu definieren).</p>
<p>Die Formatierung bekommst du hin, indem du nicht per get() jedes Zeichen einzeln ausliest, sondern über die Stream-Operatoren die Werte einliest und direkt in den richtigen Typ parsen lässt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1035656</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1035656</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 12 Apr 2006 07:27:36 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit fstream on Wed, 12 Apr 2006 07:35:29 GMT]]></title><description><![CDATA[<p>Ich verstehe den Zusammenhang aber nicht. Also tmp ist nun eine neue Instanz der schuelerklasse. Und was bringt mir das jetzt?? Ich verstehe nicht was du wozu vorhast - kann dir nicht folgen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title="=/"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1035661</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1035661</guid><dc:creator><![CDATA[t1m0n]]></dc:creator><pubDate>Wed, 12 Apr 2006 07:35:29 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit fstream on Wed, 12 Apr 2006 07:41:37 GMT]]></title><description><![CDATA[<p>t1m0n schrieb:</p>
<blockquote>
<p>Ich verstehe den Zusammenhang aber nicht. Also tmp ist nun eine neue Instanz der schuelerklasse.</p>
</blockquote>
<p>Genau richtig. Du könntest auch eine bereits vorhandene Instanz dafür verwenden.</p>
<blockquote>
<p>Und was bringt mir das jetzt?? Ich verstehe nicht was du wozu vorhast - kann dir nicht folgen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title="=/"
      alt="😕"
    /></p>
</blockquote>
<p>Das ist ein selbständiges Objekt - d.h. du könntest es z.B. in einen vector packen, an andere Funktionen übergeben oder irgendwie weiterverarbeiten. Wichtig ist im Moment, daß du in diesem Objekt die Schülerdaten aus deiner Datei eintragen kannst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1035665</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1035665</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 12 Apr 2006 07:41:37 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit fstream on Wed, 12 Apr 2006 07:48:47 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>t1m0n schrieb:</p>
<blockquote>
<p>Ich verstehe den Zusammenhang aber nicht. Also tmp ist nun eine neue Instanz der schuelerklasse.</p>
</blockquote>
<p>Genau richtig. Du könntest auch eine bereits vorhandene Instanz dafür verwenden.</p>
</blockquote>
<p>Ich habe ja a als instanz genommen, möchte demnach mit a halt weitermachen weil es für mich als Anfänger ja klar erkennbar sein soll was was ist.</p>
<blockquote>
<p>Wichtig ist im Moment, daß du in diesem Objekt die Schülerdaten aus deiner Datei eintragen kannst.</p>
</blockquote>
<p>Ja, das habe ich ja auch vor. Ich möchte den Inhalt auslesen (so wie er wirklich ist) und dann weiter beschreiben können. Warum hast du als bedingung bei while(lesen) lesen verwendet? Welchen wert liefert das?</p>
<p>vector <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> sagt mir nichts..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1035673</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1035673</guid><dc:creator><![CDATA[t1m0n]]></dc:creator><pubDate>Wed, 12 Apr 2006 07:48:47 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit fstream on Wed, 12 Apr 2006 07:58:01 GMT]]></title><description><![CDATA[<p>t1m0n schrieb:</p>
<blockquote>
<p>Warum hast du als bedingung bei while(lesen) lesen verwendet? Welchen wert liefert das?</p>
</blockquote>
<p>streams können implizit in bool umgewandelt werden - dabei entspricht &quot;false&quot;, daß der Stream in irgendeinem Fehlerzustand gelandet ist (z.B. EOF oder falsches Zeichen am falschen Platz). D.h. die Schleife arbeitet so lange weiter, wie sie Daten auswerten kann.</p>
<blockquote>
<p>vector <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> sagt mir nichts..</p>
</blockquote>
<p>Das ist eine Möglichkeit, viele gleichartige Daten auf einem Haufen zu speichern (analog zu Arrays, aber deutlich flexibler). Wenn du noch einen Tag wartest - in der nächsten Ausgabe des C++-Magazins kommt auch ein Artikel zu vector&lt;&gt; und anderen Containerklassen der STL.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1035679</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1035679</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 12 Apr 2006 07:58:01 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit fstream on Wed, 12 Apr 2006 08:10:51 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Wenn du noch einen Tag wartest - in der nächsten Ausgabe des C++-Magazins kommt auch ein Artikel zu vector&lt;&gt; und anderen Containerklassen der STL.</p>
</blockquote>
<p>Isat das Magazin denn OpenSource? Habe eine ältere Ausgabe im Fachhandel gesehen, kostete allerdings 10€ und das finde ich ist ein wenig viel oder?</p>
<p>Aber wozu benötige ich jetzt die Vektoren? Mit deiner schleife kann ich das doch alles ausgeben lassen oder?</p>
<p>Mir gibt die Konsole nun folgendes aus: 97509851100529949-1<br />
Ich habe das einlesen so gestalltet:</p>
<pre><code class="language-cpp">//Auslesen der Datei
         ifstream lesen;
         lesen.open(dateiadresse.c_str());
         while (lesen)
         {
         cout &lt;&lt; lesen.get();
         }
         lesen.close();
</code></pre>
<p>Als ich die Methode get weggelassen habe, gab es eine Endlosschleife, woran lag das eigentlich?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1035690</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1035690</guid><dc:creator><![CDATA[t1m0n]]></dc:creator><pubDate>Wed, 12 Apr 2006 08:10:51 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit fstream on Wed, 12 Apr 2006 08:14:22 GMT]]></title><description><![CDATA[<p>t1m0n schrieb:</p>
<blockquote>
<p>CStoll schrieb:</p>
<blockquote>
<p>Wenn du noch einen Tag wartest - in der nächsten Ausgabe des C++-Magazins kommt auch ein Artikel zu vector&lt;&gt; und anderen Containerklassen der STL.</p>
</blockquote>
<p>Isat das Magazin denn OpenSource? Habe eine ältere Ausgabe im Fachhandel gesehen, kostete allerdings 10€ und das finde ich ist ein wenig viel oder?</p>
</blockquote>
<p>Das Magazin findest du hier an Bord - <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-55.html" rel="nofollow">Magazin - die Artikel</a></p>
<blockquote>
<p>Aber wozu benötige ich jetzt die Vektoren? Mit deiner schleife kann ich das doch alles ausgeben lassen oder?</p>
</blockquote>
<p>Wenn du mehr machen willst als ein- und ausgeben (z.B. die Datensätze sortieren), mußt du deine Daten irgendwo intern zwischenspeichern.</p>
<blockquote>
<p>Mir gibt die Konsole nun folgendes aus: 97509851100529949-1<br />
Ich habe das einlesen so gestalltet:</p>
<pre><code class="language-cpp">//Auslesen der Datei
         ifstream lesen;
         lesen.open(dateiadresse.c_str());
         while (lesen)
         {
         cout &lt;&lt; lesen.get();
         }
         lesen.close();
</code></pre>
</blockquote>
<p>[/quote]get() gibt einen int zurück (-1 steht übrigens für EOF), wenn du etwas lesbareres haben willst, mußt du das zumindest nach char casten. Oder du liest dir den Thread nochmal aufmerksam durch und denkst etwas länger über operator&gt;&gt; nach.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1035697</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1035697</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 12 Apr 2006 08:14:22 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit fstream on Wed, 12 Apr 2006 08:25:07 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>tmp ist ein Objekt vom Typ &quot;schueler&quot; - dort kannst du alle eingelesenen Daten des Schülers zusammenfassen (nächste Steigerung des Codes wäre es übrigens, für &quot;schueler&quot; und &quot;noten&quot; einen eigenen operator&gt;&gt; und operator&lt;&lt; zu definieren).</p>
<p>Die Formatierung bekommst du hin, indem du nicht per get() jedes Zeichen einzeln ausliest, sondern über die Stream-Operatoren die Werte einliest und direkt in den richtigen Typ parsen lässt.</p>
</blockquote>
<p>Ich glaube du willst darauf hinaus. Ich kenne aber nicht solche Operatoren. Ich habe das übrigens nun so umgeschrieben</p>
<pre><code class="language-cpp">schreiben &lt;&lt; a.nachname &lt;&lt; &quot; &quot; &lt;&lt; a.n.deutsch;
</code></pre>
<p>Dort habe ich ja auch den &lt;&lt; Operator. Hängt das irgendwie zusammen mit dem worauf du hinaus willst??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1035704</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1035704</guid><dc:creator><![CDATA[t1m0n]]></dc:creator><pubDate>Wed, 12 Apr 2006 08:25:07 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit fstream on Wed, 12 Apr 2006 08:30:40 GMT]]></title><description><![CDATA[<p>Ja, das ist schonmal ein Anfang. Nun mußt du die Daten nur noch passend dazu einlesen:</p>
<pre><code class="language-cpp">lesen &gt;&gt; a.nachname &gt;&gt; a.n.deutsch;
</code></pre>
<p>(und bei der Ausgabe würde ich noch ein &quot;\n&quot; hinterherschieben, dann sieht deine Datei übersichtlicher aus)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1035710</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1035710</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 12 Apr 2006 08:30:40 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit fstream on Wed, 12 Apr 2006 08:58:00 GMT]]></title><description><![CDATA[<p>Ok, das mit dem \n verstehe ich, danke für den Hinweis.<br />
Aber woher soll mein Programm denn beim Einlesen wissen was a.nachname oder a.n.deutsch ist? Ich gehe davon aus, das die Laufzeit beendet ist und die Datei nach x-Tagen wieder eingelesen wird.<br />
Ich möchte, dass halt nicht nur von einer Person alles gespeichert wird, sondern das die TXT-Datei erweitert werden kann. Also n-viele Schüler in der txt verwaltet werden können.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1035725</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1035725</guid><dc:creator><![CDATA[t1m0n]]></dc:creator><pubDate>Wed, 12 Apr 2006 08:58:00 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit fstream on Wed, 12 Apr 2006 09:00:30 GMT]]></title><description><![CDATA[<p>t1m0n schrieb:</p>
<blockquote>
<p>Aber woher soll mein Programm denn beim Einlesen wissen was a.nachname oder a.n.deutsch ist? Ich gehe davon aus, das die Laufzeit beendet ist und die Datei nach x-Tagen wieder eingelesen wird.</p>
</blockquote>
<p>Dazu mußt du beim Schreiben die Reihenfolge festlegen, in der die Daten in der Datei landen und später in der selben Reihenfolge wieder auslesen (das Leerzeichen und Newline werden von op&gt;&gt; als Trennzeichen zwischen den einzelnen Werten angesehen).</p>
<p>(im Klartext: DU weißt, daß in der Datei erst der Name und dann die zugehörige Deutsch-Note kommt. Also mußt du die Elemente auch in genau dieser Reihenfolge wieder lesen)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1035730</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1035730</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 12 Apr 2006 09:00:30 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit fstream on Wed, 12 Apr 2006 09:10:34 GMT]]></title><description><![CDATA[<p>Ok. Es klappt nicht. Habe das gefühl es liegt daran das eine methode oder so wieder fehlt^^</p>
<pre><code class="language-cpp">ifstream lesen;
         lesen.open(dateiadresse.c_str());
         while (lesen)
         {
         lesen &gt;&gt; a.nachname &gt;&gt; a.n.deutsch;
         }
         lesen.close();
</code></pre>
<p>Und was das Schreiben angeht, habe ich das so gemacht:</p>
<pre><code class="language-cpp">//Schreiben der Datei
         ofstream schreiben;
         schreiben.open(dateiadresse.c_str(), ios_base::app);
         schreiben &lt;&lt; a.nachname &lt;&lt; &quot; &quot; &lt;&lt; a.n.deutsch &lt;&lt; &quot;\n&quot;;
         schreiben.close();
</code></pre>
<p>Das Schreiben funktioniert einwandfrei. In der txt steht alles drinne wie es soll, aber auslesen tut er rein garnix.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1035742</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1035742</guid><dc:creator><![CDATA[t1m0n]]></dc:creator><pubDate>Wed, 12 Apr 2006 09:10:34 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit fstream on Wed, 12 Apr 2006 09:14:19 GMT]]></title><description><![CDATA[<p>Natürlich liest er aus - allerdings überschreibt er in jedem Schleifendurchlauf die gelesenen Werte wieder neu. Das heißt, wenn du mit den Daten weiterrechnen willst, mußt du das <strong>in</strong> der while()-Schleife erledigen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1035747</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1035747</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 12 Apr 2006 09:14:19 GMT</pubDate></item></channel></rss>