<?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[c funktionen in c++ klassen benutzen?]]></title><description><![CDATA[<p>heo</p>
<p>ich arbeite gerade an einer c++ klasse für einfache dateiverabreitung und da ich<br />
bessere c kenntnisse hab benutze ich die funktionen wie fopen, fgets usw .....</p>
<p>ist das ein schlechter c++ stil oder bringt das evtl sogar performance nachteile mit sich?<br />
mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/197477/c-funktionen-in-c-klassen-benutzen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 01 Oct 2026 08:39:17 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/197477.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 10 Nov 2007 22:49:51 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to c funktionen in c++ klassen benutzen? on Sat, 10 Nov 2007 22:49:51 GMT]]></title><description><![CDATA[<p>heo</p>
<p>ich arbeite gerade an einer c++ klasse für einfache dateiverabreitung und da ich<br />
bessere c kenntnisse hab benutze ich die funktionen wie fopen, fgets usw .....</p>
<p>ist das ein schlechter c++ stil oder bringt das evtl sogar performance nachteile mit sich?<br />
mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1401167</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1401167</guid><dc:creator><![CDATA[d3f3nd3r]]></dc:creator><pubDate>Sat, 10 Nov 2007 22:49:51 GMT</pubDate></item><item><title><![CDATA[Reply to c funktionen in c++ klassen benutzen? on Sat, 10 Nov 2007 23:26:00 GMT]]></title><description><![CDATA[<p>Schlechter Stil, aber wenn dann gibts eher leichte Geschwindigkeits-Vorteile für die C-Funktionen (soweit ich weiß). Mit ein bisschen Gewöhnung ist die C++-Handhabung auch eine Ecke schneller und eleganter, lohnt sich also so oder so &quot;umzusteigen&quot; <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>Die einzige C-Funktion, die ich (noch) nutze, ist atoi, die lieeebe ich <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/1401177</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1401177</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Sat, 10 Nov 2007 23:26:00 GMT</pubDate></item><item><title><![CDATA[Reply to c funktionen in c++ klassen benutzen? on Sun, 11 Nov 2007 11:14:28 GMT]]></title><description><![CDATA[<p>hm ok....</p>
<p>hat irgendwer tips, wo ich im inet gute infos zu dem thema file i/o usw bekomme ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1401261</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1401261</guid><dc:creator><![CDATA[d3f3nd3r]]></dc:creator><pubDate>Sun, 11 Nov 2007 11:14:28 GMT</pubDate></item><item><title><![CDATA[Reply to c funktionen in c++ klassen benutzen? on Sun, 11 Nov 2007 14:52:30 GMT]]></title><description><![CDATA[<p>Schau dir mal die Headerdatei &lt;fstream&gt; und deren Klassen und Operationen an.<br />
Stichwort ist bei C++: &quot;Streaming&quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1401383</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1401383</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Sun, 11 Nov 2007 14:52:30 GMT</pubDate></item><item><title><![CDATA[Reply to c funktionen in c++ klassen benutzen? on Sun, 11 Nov 2007 15:38:43 GMT]]></title><description><![CDATA[<p><a href="http://www.cppreference.com/" rel="nofollow">http://www.cppreference.com/</a><br />
<a href="http://www.cplusplus.com/reference/iostream/" rel="nofollow">http://www.cplusplus.com/reference/iostream/</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1401416</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1401416</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sun, 11 Nov 2007 15:38:43 GMT</pubDate></item><item><title><![CDATA[Reply to c funktionen in c++ klassen benutzen? on Sun, 11 Nov 2007 17:03:55 GMT]]></title><description><![CDATA[<p>Badestrand schrieb:</p>
<blockquote>
<p>Schlechter Stil, aber wenn dann gibts eher leichte Geschwindigkeits-Vorteile für die C-Funktionen (soweit ich weiß).</p>
</blockquote>
<p>Das hängt davon ab, wofür die Dateistreams benutzt werden. std::fstream per se einen besseren Stil als den C-Dateifunktionen zu attestieren halte ich für unangebracht; dadurch, daß man das Objekt vor den .-Operator schreibt und nicht als Parameter übergibt, wird das ganze nicht besser.</p>
<p>Ein Vorteil der C++-Streams ist, daß das Streamen von PODs und überladenen Typen wesentlich einfacher und fehlerunanfälliger ist. Je nach Anwendungsfall (z.B. wenn man hauptsächlich fstream::write() und fstream::read() benutzt) können aber die C-Funktionen auch qualitativ gleichwertig sein, und da sie in allen mir bekannten Implementationen ein wenig bis sehr viel schneller sind, bevorzuge ich sie gewöhnlich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1401490</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1401490</guid><dc:creator><![CDATA[audacia]]></dc:creator><pubDate>Sun, 11 Nov 2007 17:03:55 GMT</pubDate></item><item><title><![CDATA[Reply to c funktionen in c++ klassen benutzen? on Sun, 11 Nov 2007 17:51:38 GMT]]></title><description><![CDATA[<p>audacia schrieb:</p>
<blockquote>
<p>Badestrand schrieb:</p>
<blockquote>
<p>Schlechter Stil, aber wenn dann gibts eher leichte Geschwindigkeits-Vorteile für die C-Funktionen (soweit ich weiß).</p>
</blockquote>
<p>Das hängt davon ab, wofür die Dateistreams benutzt werden. std::fstream per se einen besseren Stil als den C-Dateifunktionen zu attestieren halte ich für unangebracht</p>
</blockquote>
<p>Es ist aber korrekt. Und zwar allein dadurch, dass man nur mit diesen Kapselungen Thread-sicher programmieren kann. C-Dateiströme sind rohe Ressourcenhandles, hier korrektes Verhalten garantieren zu wollen ist quasi aussichtslos. Das heißt, dass man diese Stream-Handles in allen kritischen Bereichen kapseln *muss*. Und dann kann man auch gleich die bereits existierenden Varianten verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1401519</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1401519</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Sun, 11 Nov 2007 17:51:38 GMT</pubDate></item><item><title><![CDATA[Reply to c funktionen in c++ klassen benutzen? on Sun, 11 Nov 2007 18:29:17 GMT]]></title><description><![CDATA[<p>ich will jetzt nicht provozieren, dass der thread schon wieder in die ecke abrutscht, aber: ansi-c funktionen zu verwenden, weil sie angeblich schneller seien, gehört in die ecke der microoptimierungen. bevor man sich über sowas gedanken macht, sollte man lieber die &quot;sicheren&quot; c++ varianten verwenden.</p>
<p>wenn man dann irgendwann feststellt, dass man doch noch ein wenig mehr performance rauskitzeln muss, kann man sich nochmal die &quot;alten&quot; methoden angucken.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1401543</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1401543</guid><dc:creator><![CDATA[thordk]]></dc:creator><pubDate>Sun, 11 Nov 2007 18:29:17 GMT</pubDate></item><item><title><![CDATA[Reply to c funktionen in c++ klassen benutzen? on Sun, 11 Nov 2007 19:39:22 GMT]]></title><description><![CDATA[<p>na dann werde ich mich auch mal in die iostream einlesen.</p>
<p>bei mir ists nur so, dass ich schon 3 jahre lange c benutze und vor ca einem jahr begonnen habe auch c++ zu verwenden vor allen wegen dem oop paradigma <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/1401579</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1401579</guid><dc:creator><![CDATA[d3f3nd3r]]></dc:creator><pubDate>Sun, 11 Nov 2007 19:39:22 GMT</pubDate></item><item><title><![CDATA[Reply to c funktionen in c++ klassen benutzen? on Sun, 11 Nov 2007 21:09:09 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/5021">@Konrad</a> Rudolph: ist std::fstream threadsicher?<br />
Bezogen auf Exceptionsicherheit stimme ich dir aber zu (allerdings verwende ich für diesen Fall ohnehin ein kleines Handle-Wrapper-Template, das auch bei WinAPI-Handles recht nützlich ist).</p>
<p>thordk schrieb:</p>
<blockquote>
<p>ansi-c funktionen zu verwenden, weil sie angeblich schneller seien, gehört in die ecke der microoptimierungen.</p>
</blockquote>
<p>Das dachte ich auch, bis ich feststellte, das die C-Streams in manchen Situationen bis zu 4x schneller sind. Und das ist keine &quot;premature optimisation&quot; oder Mikrooptimierung mehr, das ist die Folge des fragwürdigen Designs von Teilen der C++-Standard-Library.</p>
<p>Dennoch ist es für Einsteiger wohl sinnvoller, die C++-Streams zu verwenden, schon wegen der Exceptionsicherheit und der Tatsache, daß man fstream.close() geruhsam vergessen kann <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/1401632</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1401632</guid><dc:creator><![CDATA[audacia]]></dc:creator><pubDate>Sun, 11 Nov 2007 21:09:09 GMT</pubDate></item><item><title><![CDATA[Reply to c funktionen in c++ klassen benutzen? on Sun, 11 Nov 2007 22:18:30 GMT]]></title><description><![CDATA[<p>faktor 4? klingt unglaubwürdig <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="😃"
    /> welche randbedingungen herrschten da vor?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1401651</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1401651</guid><dc:creator><![CDATA[thordk]]></dc:creator><pubDate>Sun, 11 Nov 2007 22:18:30 GMT</pubDate></item><item><title><![CDATA[Reply to c funktionen in c++ klassen benutzen? on Sun, 11 Nov 2007 23:26:09 GMT]]></title><description><![CDATA[<p>thordk schrieb:</p>
<blockquote>
<p>faktor 4? klingt unglaubwürdig <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>
</blockquote>
<p>Der Faktor 4 ergab sich bei detaillierteren Nachmessungen. In der Praxis liegt er eher noch höher.</p>
<p>thordk schrieb:</p>
<blockquote>
<p>welche randbedingungen herrschten da vor?</p>
</blockquote>
<p>Dinkumware STL v5.01, C++Builder 2007, folgende Funktion:</p>
<pre><code class="language-cpp">bool BinFile::load_internal (const std::string&amp; filename) const
{
    std::ifstream cppfile;
    std::FILE* cfile;
    size_t s;

    s = getFileSize (filename);
    _data.resize (s);

    if (Variante 1)
    {
        cfile = std::fopen (filename.c_str (), &quot;rb&quot;);
        if (!cfile)
            return false;
        std::fread (&amp;_data[0], 1, s, cfile);
        std::fclose (cfile);
    }
    else // Variante 2 - mindestens 4x langsamer
    {
        cppfile.open (filename.c_str (), std::ios_base::binary | std::ios_base::in);
        if (!cppfile.good ())
            return false;
        cppfile.read (&amp;_data[0], s);
        cppfile.close ();
    }

    return true;
}
</code></pre>
<p>Der Grund ist vermutlich, daß Dinkumware sich bei der Implementation von ifstream::read() den copy()-Algorithmus zum Kopieren von Daten aus dem Dateipuffer zum Ziel verwendet. Und der ist nunmal für nicht sonderlich effizient.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1401666</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1401666</guid><dc:creator><![CDATA[audacia]]></dc:creator><pubDate>Sun, 11 Nov 2007 23:26:09 GMT</pubDate></item><item><title><![CDATA[Reply to c funktionen in c++ klassen benutzen? on Mon, 12 Nov 2007 06:17:28 GMT]]></title><description><![CDATA[<p>Zur Threadsicherheit von std::fstream, die kann eigentlich nicht gegeben sein, da der Standard gar keine Threads kennt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1401685</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1401685</guid><dc:creator><![CDATA[Tyrdal]]></dc:creator><pubDate>Mon, 12 Nov 2007 06:17:28 GMT</pubDate></item><item><title><![CDATA[Reply to c funktionen in c++ klassen benutzen? on Mon, 12 Nov 2007 07:50:39 GMT]]></title><description><![CDATA[<p>Threadsicher sind an sich weder die fstreams noch die FILE-Handles. Zum Faktor 4: Das ist peinlich, aber leider wohl richtig. Na ja; wieso implementiert die nichtmal jemand richtig? fstreams könnten konzeptuell *schneller* sein als C-Streams. Abgesehen davon *ist* Faktor 4 eine absolute Mikrooptimierung, vor allem im Bereich I/O, das ist nämlich selten der Bottleneck.</p>
<p>… aber abgesehen davon ist das natürlich trotzdem eine legitime Optimierung, wenn Profiling ergeben hat, dass hier beschleunigt werden kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1401710</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1401710</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Mon, 12 Nov 2007 07:50:39 GMT</pubDate></item><item><title><![CDATA[Reply to c funktionen in c++ klassen benutzen? on Mon, 12 Nov 2007 09:56:18 GMT]]></title><description><![CDATA[<p>audacia schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/5021">@Konrad</a> Rudolph: ist std::fstream threadsicher?...</p>
</blockquote>
<p>Tyrdal schrieb:</p>
<blockquote>
<p>Zur Threadsicherheit von std::fstream, ...</p>
</blockquote>
<p>Hat auch niemand behauptet.<br />
Niemand hat behauptet, dass jede Implementierung vom fstream threadsafe wäre...<br />
Sondern nur:</p>
<p>Konrad Rudolph schrieb:</p>
<blockquote>
<p>...dass man nur mit diesen Kapselungen Thread-sicher programmieren kann. ...</p>
</blockquote>
<p>Das bedeutet: Wenn ich Streams nutze, <em>kann</em> ich (z.B. hinter dieser Kapsel) threadsafe programmieren. Mit einem direkten FILE* geht das eben nicht ...</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1401754</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1401754</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Mon, 12 Nov 2007 09:56:18 GMT</pubDate></item><item><title><![CDATA[Reply to c funktionen in c++ klassen benutzen? on Mon, 12 Nov 2007 12:51:15 GMT]]></title><description><![CDATA[<p>d3f3nd3r schrieb:</p>
<blockquote>
<p>na dann werde ich mich auch mal in die iostream einlesen.</p>
<p>bei mir ists nur so, dass ich schon 3 jahre lange c benutze und vor ca einem jahr begonnen habe auch c++ zu verwenden vor allen wegen dem oop paradigma <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>
</blockquote>
<p>Wenn das OOP Paradigma einer deiner Gruende war, &quot;auch&quot; C++ zu verwenden, dann solltest du gerade deswegen erstmal den C++ streams Vorrang vor den C-I/O-Funktionen geben. Und dann evtl. das &quot;auch&quot; streichen und C++ schreiben und nicht wie so einige Buecher suggerieren C schreiben und da wo C nicht weiter kommt C++ Elemente zu verwenden, bzw. da wo die C++ Kenntnisse nicht ausreichen den Code mit C zusammenkleben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1401822</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1401822</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Mon, 12 Nov 2007 12:51:15 GMT</pubDate></item><item><title><![CDATA[Reply to c funktionen in c++ klassen benutzen? on Mon, 12 Nov 2007 12:57:35 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>...wie so einige Buecher suggerieren C schreiben und ... da wo die C++ Kenntnisse nicht ausreichen den Code mit C zusammenkleben.</p>
</blockquote>
<p>Da sprichst Du ein großes Wort gelassen aus ! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1401826</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1401826</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Mon, 12 Nov 2007 12:57:35 GMT</pubDate></item><item><title><![CDATA[Reply to c funktionen in c++ klassen benutzen? on Mon, 12 Nov 2007 12:57:34 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/5021">@Konrad</a> Rudolph<br />
Es gibt durchaus Programme, die große Datenmengen lesen und schreiben müssen. Da sind die IO-Operation ein Bottleneck.<br />
Ich habe auch schon mal Vergleiche der Geschwindigkeiten verschiedener Stream-Implementationen gemacht und auch festgestellt, dass Dinkumware und RougeWave sehr langsam sind. STLPort jedoch liegt nahe bei den puren C-Funktionen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1401827</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1401827</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Mon, 12 Nov 2007 12:57:34 GMT</pubDate></item><item><title><![CDATA[Reply to c funktionen in c++ klassen benutzen? on Mon, 12 Nov 2007 15:35:57 GMT]]></title><description><![CDATA[<p>Wenn man große Datenmengen am Stück in Dateien schreiben oder auslesen will, dann ist häufig die ungepufferte Variante schneller als die standardmäßig verwendete Pufferung.<br />
(Und dann sollte es kaum mehr einen Unterschied zwischen den C++ Streams und den C FILE-Funktionen geben)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1401927</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1401927</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Mon, 12 Nov 2007 15:35:57 GMT</pubDate></item></channel></rss>