<?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[fstream in klassen geht nicht richtig?]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich hab folgendes Programm:</p>
<pre><code class="language-cpp">#include &lt;stdio&gt;
#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;cstring&gt;
#include &lt;stdlib&gt;

class test
{
public:
bool dateispeichern(const string &amp;filename);
bool dateiladen(const string &amp;filename);
void setzevariable(const int &amp;wert);
private:
int variable;
fstream file;
};

bool test::dateispeichern(const string &amp;filename)
{
file.open(filename.c_str(), ios::out | ios::binary);
if (file.is_open())
{
file.write (reinterpret_cast&lt;char *&gt;(&amp;variable), sizeof(int));
file.close();
return true;
}
else
{
return false;
}
}

bool test::dateilesen(const string &amp;filename)
{
file.open(filename.c_str(), ios::in | ios::binary);
if (file.Is_open())
{
file.read(reinterpret_cast&lt;char *&gt;(&amp;variable), sizeof(int));
file.close();
return true;
}
else
{
return false;
}
}

void test::setzevariable(const int &amp;wert)
{
variable = wert;
}

int main()
{
test Testobjekt
Testobjekt.dateilesen(&quot;C:\\test.bin&quot;);
Testobjekt.setzevariable(5);
Testobjekt.dateischreiben(&quot;C:\\test1.bin&quot;);
return 0;
}
</code></pre>
<p>das ergebnis ist eine 0 byte datei, das lesen klappt auch, setze ich jetzt jedoch den fstream direkt in die memberfunktion dann klappts, nur es klappt nicht wenn ich ihn private setze.</p>
<p>Was ist falsch?</p>
<p>Gruß und danke im voraus</p>
<p>Hans</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/200077/fstream-in-klassen-geht-nicht-richtig</link><generator>RSS for Node</generator><lastBuildDate>Sun, 04 Oct 2026 10:09:34 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/200077.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 10 Dec 2007 14:45:55 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to fstream in klassen geht nicht richtig? on Mon, 10 Dec 2007 14:48:42 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich hab folgendes Programm:</p>
<pre><code class="language-cpp">#include &lt;stdio&gt;
#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;cstring&gt;
#include &lt;stdlib&gt;

class test
{
public:
bool dateispeichern(const string &amp;filename);
bool dateiladen(const string &amp;filename);
void setzevariable(const int &amp;wert);
private:
int variable;
fstream file;
};

bool test::dateispeichern(const string &amp;filename)
{
file.open(filename.c_str(), ios::out | ios::binary);
if (file.is_open())
{
file.write (reinterpret_cast&lt;char *&gt;(&amp;variable), sizeof(int));
file.close();
return true;
}
else
{
return false;
}
}

bool test::dateilesen(const string &amp;filename)
{
file.open(filename.c_str(), ios::in | ios::binary);
if (file.Is_open())
{
file.read(reinterpret_cast&lt;char *&gt;(&amp;variable), sizeof(int));
file.close();
return true;
}
else
{
return false;
}
}

void test::setzevariable(const int &amp;wert)
{
variable = wert;
}

int main()
{
test Testobjekt
Testobjekt.dateilesen(&quot;C:\\test.bin&quot;);
Testobjekt.setzevariable(5);
Testobjekt.dateischreiben(&quot;C:\\test1.bin&quot;);
return 0;
}
</code></pre>
<p>das ergebnis ist eine 0 byte datei, das lesen klappt auch, setze ich jetzt jedoch den fstream direkt in die memberfunktion dann klappts, nur es klappt nicht wenn ich ihn private setze.</p>
<p>Was ist falsch?</p>
<p>Gruß und danke im voraus</p>
<p>Hans</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1418182</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1418182</guid><dc:creator><![CDATA[HansGeorg]]></dc:creator><pubDate>Mon, 10 Dec 2007 14:48:42 GMT</pubDate></item><item><title><![CDATA[Reply to fstream in klassen geht nicht richtig? on Mon, 10 Dec 2007 14:49:58 GMT]]></title><description><![CDATA[<p>Wie genau äußert sich dieses &quot;klappt nicht&quot;? Und was für einen inn macht es, den Stream ständig hinter deinem Objekt hinterherzuziehen?</p>
<p>(PS: Ich würde ja vermuten, daß du beim Lesen auf ein EOF gestoßen bist und dadurch den Stream in Fehlerstatus gesetzt hast)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1418183</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1418183</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 10 Dec 2007 14:49:58 GMT</pubDate></item><item><title><![CDATA[Reply to fstream in klassen geht nicht richtig? on Mon, 10 Dec 2007 14:51:11 GMT]]></title><description><![CDATA[<p>Das problem is das beim schreiben immer eine 0 byte datei erzeugt wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1418185</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1418185</guid><dc:creator><![CDATA[HansGeorg]]></dc:creator><pubDate>Mon, 10 Dec 2007 14:51:11 GMT</pubDate></item><item><title><![CDATA[Reply to fstream in klassen geht nicht richtig? on Mon, 10 Dec 2007 14:54:19 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>PS: Ich würde ja vermuten,</p>
</blockquote>
<p>Oh, wieder das obligatorische 'Ich würde ja vermuten...'. Ein Hochgenuss, darauf hatte ich schon gewartet! <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><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/16513">@HansGeorg</a>: Da ich ja mal CStoll hinsichtlich seiner Vermutungen sehr vertraue, solltest du den Stream mal mit <em>if(!file.good())</em> checken, ob ein Errorbit gesetzt wurde... Das würde auch die leere Datei erklären.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1418188</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1418188</guid><dc:creator><![CDATA[mikey]]></dc:creator><pubDate>Mon, 10 Dec 2007 14:54:19 GMT</pubDate></item><item><title><![CDATA[Reply to fstream in klassen geht nicht richtig? on Mon, 10 Dec 2007 15:02:54 GMT]]></title><description><![CDATA[<p>HansGeorg schrieb:</p>
<blockquote>
<p>Das problem is das beim schreiben immer eine 0 byte datei erzeugt wird.</p>
</blockquote>
<p>Das liegt wohl hauptsächlich daran, daß du nicht prüfst, ob das Lesen <strong>wirklich</strong> geklappt hat. Aus einer 0 Byte Datei kannst du schlecht lesen, also setzt der Stream dort eofbit und failbit - und in dem Zustand weigert er sich, irgendwas zu machen (bis die Fehlerflags zurückgesetzt werden).</p>
<p>Außerdem frage ich mich immer noch, WIESO du den Stream unbedingt als Member der Klasse anlegen willst.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/12957">@mikey</a>: Ja, manchmal zeigt meine Kristallkugel tatsächlich noch etwas an <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1418196</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1418196</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 10 Dec 2007 15:02:54 GMT</pubDate></item><item><title><![CDATA[Reply to fstream in klassen geht nicht richtig? on Mon, 10 Dec 2007 15:52:48 GMT]]></title><description><![CDATA[<p>So jetzt aber mal nen paar Fragen und Anmerkungen:</p>
<pre><code>1.
 .0 Warum ist das std::fstream-Objekt eine Membervariable von der Klasse?
2.
 .1 &lt;stdlib&gt;, was ist das? &lt;cstdlib&gt; meinst du vielleicht ...
 .2 &lt;stdio&gt;, was ist das? &lt;cstdio&gt; meinst du vielleicht ...
 .3 &lt;cstring&gt;, &lt;cstdio&gt;, &lt;cstdlib&gt; brauchst du nicht.
3.
 .1 std::ios (Basisklasse von std::fstream) hat bereits den operator! überladen. 
    Guck dir den evtl. einmal an. Das steigert die Übersichtlichkeit.
 .2 Wenn du nur ein return im else-Zweig hast, wäre es logisch, den if-Zweig umzudrehen.
</code></pre>
<pre><code class="language-cpp">if (x == true)
{
    /* ... */ 
    return true;
}
else
{
    return false;
}
</code></pre>
<p>=&gt;</p>
<pre><code class="language-cpp">if (x == false) return false;
/* ... */
return true;
</code></pre>
<pre><code>.3 Beim zerstören eines std::fstream's wird automatisch die Funktion close aufgerufen! =&gt; Unnötig.
4.
 .0 Wenn du castest, caste direkt in den gewünschten Typ. Beachte dabei auch const! (s. std::fstream::write)
5.
 .0 C++ Syntax ist nicht upper/lower-case unabhängig. D.h. du kannst nicht &quot;Is_open&quot; anstelle von &quot;is_open&quot; schreiben!
</code></pre>
<p>Vlg Deviloper ^^</p>
<p>PS: Ist nicht böse gemeint, sondern soll deinen Stil verbessern!<br />
PPS: Beim Programmieren eignet sich Englisch am besten als Sprache, da dort nicht Umlaut vorhanden sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1418232</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1418232</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Mon, 10 Dec 2007 15:52:48 GMT</pubDate></item></channel></rss>