<?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 an Methode übergeben?]]></title><description><![CDATA[<p>Hi.</p>
<p>Kann ich einen fstream, also ne geöffnete Datei, an eine Methode übergeben? Bisher habe ich das ganze so gelöst:</p>
<pre><code>void Vokabel::abfragen()
{       fstream datei (&quot;vokabel.txt&quot;);
        ...
        datei.close();
}
</code></pre>
<p>Ich möchte aber gerne die Datei in der main-Funktion öffnen und dann der Methode übergeben, falls das gehen sollte.</p>
<p>Gruß Alex</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/165027/fstream-an-methode-übergeben</link><generator>RSS for Node</generator><lastBuildDate>Mon, 14 Sep 2026 04:54:10 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/165027.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 14 Nov 2006 22:12:12 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to fstream an Methode übergeben? on Tue, 14 Nov 2006 22:12:12 GMT]]></title><description><![CDATA[<p>Hi.</p>
<p>Kann ich einen fstream, also ne geöffnete Datei, an eine Methode übergeben? Bisher habe ich das ganze so gelöst:</p>
<pre><code>void Vokabel::abfragen()
{       fstream datei (&quot;vokabel.txt&quot;);
        ...
        datei.close();
}
</code></pre>
<p>Ich möchte aber gerne die Datei in der main-Funktion öffnen und dann der Methode übergeben, falls das gehen sollte.</p>
<p>Gruß Alex</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1174789</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1174789</guid><dc:creator><![CDATA[AlexDozer]]></dc:creator><pubDate>Tue, 14 Nov 2006 22:12:12 GMT</pubDate></item><item><title><![CDATA[Reply to fstream an Methode übergeben? on Tue, 14 Nov 2006 22:15:15 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">void Klasse::Methode (std::iostream&amp; Stream)
{

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1174792</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1174792</guid><dc:creator><![CDATA[Z2]]></dc:creator><pubDate>Tue, 14 Nov 2006 22:15:15 GMT</pubDate></item><item><title><![CDATA[Reply to fstream an Methode übergeben? on Wed, 15 Nov 2006 07:33:08 GMT]]></title><description><![CDATA[<p>Danke!</p>
<p>Gruß Alex</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1174888</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1174888</guid><dc:creator><![CDATA[AlexDozer]]></dc:creator><pubDate>Wed, 15 Nov 2006 07:33:08 GMT</pubDate></item><item><title><![CDATA[Reply to fstream an Methode übergeben? on Wed, 15 Nov 2006 09:22:00 GMT]]></title><description><![CDATA[<p>ne idee waer doch noch</p>
<pre><code class="language-cpp">class Klasse
{
    private:
        fstream datei;
    public:
        Klasse();
        ~Klasse();

        void Abfragen();
};
</code></pre>
<pre><code class="language-cpp">Klasse::Klasse()
{
    datei.open(&quot;vokabel.txt&quot;);
}
Klasse::~Klasse
{
    if(datei.isopen())
        datei.close();
}
void Klasse::Abfragen()
{
    if(datei.isopen())
    {
        // do something with datei
    }
}
</code></pre>
<p>optional bietet es sich auch an beim instanziieren der klasse den konstruktor noch den string zur datei zu uebergeben</p>
<pre><code class="language-cpp">class Klasse
{
    private:
        fstream datei;
    public:
        Klasse(std::string);
        ~Klasse();

    void Abfragen();
};
Klasse::Klasse(std::string FileName)
{
    datei.open(FileName);
}
Klasse::~Klasse
{
    if(datei.isopen())
        datei.close();
}
void Klasse::Abfragen()
{
    if(datei.isopen())
    {
        // do something with datei
    }
}

int main()
{
    Klasse abfragerei(&quot;vokabel.txt&quot;);
    abfragerei.Abfragen();
    return 0;
}
</code></pre>
<p>wenn man moechte kann man auch den string per parameter angeben</p>
<pre><code class="language-cpp">int main(int argc, char* argv[], char* envp[])
{
    if( argc &lt;= 1 )
        return -1;
    else
    {
        Klasse abfragerei(*(argv++));
        abfragerei.Abfragen();
    }
    return 0;
}
</code></pre>
<p>// untested</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1174971</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1174971</guid><dc:creator><![CDATA[EXDW]]></dc:creator><pubDate>Wed, 15 Nov 2006 09:22:00 GMT</pubDate></item><item><title><![CDATA[Reply to fstream an Methode übergeben? on Wed, 15 Nov 2006 09:57:37 GMT]]></title><description><![CDATA[<p>Mr Evil schrieb:</p>
<blockquote>
<p>optional bietet es sich auch an beim instanziieren der klasse den konstruktor noch den string zur datei zu uebergeben</p>
</blockquote>
<p>Ein paar Vereinfachungen/Verbesserungen:</p>
<ul>
<li>fstream::open() erwartet (leider) keinen string, sondern einen const char* - den du dir mit c_str() beschaffen mußt.</li>
<li>der close() Aufruf im Destruktor ist überflüssig - das erledigt fstream auch selber</li>
<li>ich würde da noch eine Methode ergänzen, um die offene Datei später zu wechseln</li>
</ul>
]]></description><link>https://www.c-plusplus.net/forum/post/1174987</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1174987</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 15 Nov 2006 09:57:37 GMT</pubDate></item><item><title><![CDATA[Reply to fstream an Methode übergeben? on Wed, 15 Nov 2006 09:58:11 GMT]]></title><description><![CDATA[<p>Das ist natürlich ein etwas anderer Ansatz, als vom Frager gefordert. Aber bitte, meinetwegen. Nur dann bitte auch gleich sauber:</p>
<pre><code class="language-cpp">class Klasse
{
    private:
        std::fstream datei;
    public:
        Klasse(const std::string&amp;);

    void Abfragen();
};

Klasse::Klasse(const std::string&amp; FileName) : datei (FileName) {}
{
    if (!datei.is_open())
        throw std::runtime_error (&quot;can't open file&quot;);
}

void Klasse::Abfragen()
{
    // do something with datei
}

int main()
{
    Klasse abfragerei(&quot;vokabel.txt&quot;);
    abfragerei.Abfragen();
    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1174988</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1174988</guid><dc:creator><![CDATA[Z2]]></dc:creator><pubDate>Wed, 15 Nov 2006 09:58:11 GMT</pubDate></item><item><title><![CDATA[Reply to fstream an Methode übergeben? on Wed, 15 Nov 2006 11:06:30 GMT]]></title><description><![CDATA[<p>Schon nicht schlecht Z2! <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="😃"
    /> Aber NOCH sauberer wäre es, wenn man gleich boost::filesystem::fstream benutzen würde. Dann würde man nicht mit simplen strings arbeiten, sondern gleich mit path-Objekten, die auch noch eine Pfad-Syntax-Prüfung drin haben. :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1175080</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1175080</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Wed, 15 Nov 2006 11:06:30 GMT</pubDate></item><item><title><![CDATA[Reply to fstream an Methode übergeben? on Wed, 15 Nov 2006 12:36:50 GMT]]></title><description><![CDATA[<p>immer dieses boost gequatsche q: #gg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1175142</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1175142</guid><dc:creator><![CDATA[EXDW]]></dc:creator><pubDate>Wed, 15 Nov 2006 12:36:50 GMT</pubDate></item><item><title><![CDATA[Reply to fstream an Methode übergeben? on Wed, 15 Nov 2006 13:08:09 GMT]]></title><description><![CDATA[<p>Na na! Nichts gegen Boost! <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="😉"
    /> Wenn wir &quot;Pech&quot; haben, müssen wir boost::filesystem im TR2 ertragen! <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="😃"
    /> Die Chancen stehen da nicht schlecht, wenn nicht sogar, hat das Komitee innerlich schon zugestimmt. Dann würde das ganze so aussehen:</p>
<pre><code class="language-cpp">using namespace std::tr2;
try
{
   path mypath(&quot;./readme.txt&quot;);
   ifstream f(m&lt;path);
}
catch(filesystem_error &amp;e)
{
   cout &lt;&lt; e.what();
}
</code></pre>
<p>Für eine bessere fstream-Welt!!! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1175172</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1175172</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Wed, 15 Nov 2006 13:08:09 GMT</pubDate></item><item><title><![CDATA[Reply to fstream an Methode übergeben? on Wed, 15 Nov 2006 13:11:42 GMT]]></title><description><![CDATA[<p>Ähm, für was braucht ne vokabelklasse nen fstream member?<br />
Sollte man da nicht besser eine Load/Save funktion erstellen,<br />
und die vokabeln entsprechend in einer map&lt;string,string&gt; speichern?</p>
<p>Und, Artchi, wenn du schon boost nimmst, dann nimm doch gleich boost::spirit,<br />
dann brauchst du dich auch nicht mehr um das Laden der Datei zu kümmern,<br />
sonst kannst es direkt in die map rein semmeln lassen :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1175181</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1175181</guid><dc:creator><![CDATA[phlox81]]></dc:creator><pubDate>Wed, 15 Nov 2006 13:11:42 GMT</pubDate></item></channel></rss>