<?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[plattformunabhängiges binäres EOL]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich suche eine Möglichkeit die binäre Repräsentation des EOL für die vorhandene Plattform in einen stringstream zu bekommen. Ich hatte mir das so gedacht, dass ich erstmal in einen normalen stringstream per textmode schreibe und den dann in einen binären stringstream übertrage.</p>
<pre><code class="language-cpp">std::stringstream eol;
	eol &lt;&lt; std::endl;
	std::stringstream str(std::stringstream::in|std::stringstream::out|std::stringstream::binary);
	char temp[3] = {};
	eol.rdbuf()-&gt;sgetn(temp, 2);
	str.write(temp, 2);
</code></pre>
<p>Unter Windows müsste dann ein 0D 0A rauskommen.<br />
Es kommt aber nur ein 0A raus. Was ist hier falsch? oder besser wie macht man es richtig?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/307095/plattformunabhängiges-binäres-eol</link><generator>RSS for Node</generator><lastBuildDate>Fri, 07 Aug 2026 18:04:54 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/307095.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 16 Aug 2012 12:04:26 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to plattformunabhängiges binäres EOL on Thu, 16 Aug 2012 12:04:26 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich suche eine Möglichkeit die binäre Repräsentation des EOL für die vorhandene Plattform in einen stringstream zu bekommen. Ich hatte mir das so gedacht, dass ich erstmal in einen normalen stringstream per textmode schreibe und den dann in einen binären stringstream übertrage.</p>
<pre><code class="language-cpp">std::stringstream eol;
	eol &lt;&lt; std::endl;
	std::stringstream str(std::stringstream::in|std::stringstream::out|std::stringstream::binary);
	char temp[3] = {};
	eol.rdbuf()-&gt;sgetn(temp, 2);
	str.write(temp, 2);
</code></pre>
<p>Unter Windows müsste dann ein 0D 0A rauskommen.<br />
Es kommt aber nur ein 0A raus. Was ist hier falsch? oder besser wie macht man es richtig?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242446</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242446</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Thu, 16 Aug 2012 12:04:26 GMT</pubDate></item><item><title><![CDATA[Reply to plattformunabhängiges binäres EOL on Thu, 16 Aug 2012 12:10:42 GMT]]></title><description><![CDATA[<p>Das \r(0x0D) wird m.W. nur beim Schreiben in eine Textdatei da reingewurstelt. Beim Lesen wirds wieder rausgefiltert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242450</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242450</guid><dc:creator><![CDATA[Caligulaminus]]></dc:creator><pubDate>Thu, 16 Aug 2012 12:10:42 GMT</pubDate></item><item><title><![CDATA[Reply to plattformunabhängiges binäres EOL on Thu, 16 Aug 2012 12:44:16 GMT]]></title><description><![CDATA[<p>Ich will das aber, wenn es geht, wissen ohne eine Textdatei schreiben zu müssen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242474</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242474</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Thu, 16 Aug 2012 12:44:16 GMT</pubDate></item><item><title><![CDATA[Reply to plattformunabhängiges binäres EOL on Thu, 16 Aug 2012 14:04:34 GMT]]></title><description><![CDATA[<p>Braunstein schrieb:</p>
<blockquote>
<p>Ich will das aber, wenn es geht, wissen ohne eine Textdatei schreiben zu müssen.</p>
</blockquote>
<p>Geht leider nicht: <a href="http://stackoverflow.com/questions/6865398/inserting-endline-into-a-stringstream" rel="nofollow">http://stackoverflow.com/questions/6865398/inserting-endline-into-a-stringstream</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242512</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242512</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Thu, 16 Aug 2012 14:04:34 GMT</pubDate></item><item><title><![CDATA[Reply to plattformunabhängiges binäres EOL on Thu, 16 Aug 2012 15:14:37 GMT]]></title><description><![CDATA[<p>Ok.<br />
Wo wird diese Konvertierung beim Lesen und Schreiben dann durchgeführt? Irgendwo im fstream?<br />
Ich habe das Ganze jetzt erstmal mit defines gelöst. Gefällt mir zwar nicht wirklich funktioniert aber.<br />
Jetzt kann man auch beim Mac unter Windows erzeugte Textdateien lesen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242539</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242539</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Thu, 16 Aug 2012 15:14:37 GMT</pubDate></item><item><title><![CDATA[Reply to plattformunabhängiges binäres EOL on Thu, 16 Aug 2012 15:29:16 GMT]]></title><description><![CDATA[<p>Braunstein schrieb:</p>
<blockquote>
<p>Jetzt kann man auch beim Mac unter Windows erzeugte Textdateien lesen.</p>
</blockquote>
<p>Sag doch gleich, was du vor hast, dann kann man dir auch sofort helfen: Nimm Boost Iostreams. Die haben das schon lange gelöst und viel besser als mit Makros.<br />
<a href="http://www.boost.org/doc/libs/1_36_0/libs/iostreams/doc/classes/newline_filter.html" rel="nofollow">http://www.boost.org/doc/libs/1_36_0/libs/iostreams/doc/classes/newline_filter.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242542</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242542</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 16 Aug 2012 15:29:16 GMT</pubDate></item><item><title><![CDATA[Reply to plattformunabhängiges binäres EOL on Thu, 16 Aug 2012 15:37:40 GMT]]></title><description><![CDATA[<p>Danke.<br />
boost kommt leider nicht infrage. Mein Chef hat die Verwendung verboten.<br />
Ich kann da aber mal reinschauen wie die das machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242545</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242545</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Thu, 16 Aug 2012 15:37:40 GMT</pubDate></item><item><title><![CDATA[Reply to plattformunabhängiges binäres EOL on Thu, 16 Aug 2012 16:55:38 GMT]]></title><description><![CDATA[<p>Braunstein schrieb:</p>
<blockquote>
<p>Danke.<br />
boost kommt leider nicht infrage. Mein Chef hat die Verwendung verboten.<br />
Ich kann da aber mal reinschauen wie die das machen.</p>
</blockquote>
<p>Darf man Fragen aus welchen Grund boost verboten ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242564</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242564</guid><dc:creator><![CDATA[firefly]]></dc:creator><pubDate>Thu, 16 Aug 2012 16:55:38 GMT</pubDate></item><item><title><![CDATA[Reply to plattformunabhängiges binäres EOL on Thu, 16 Aug 2012 17:05:47 GMT]]></title><description><![CDATA[<p>Das ist garnicht so leicht zu sagen.<br />
Mein Chef misstraut erstmal grundsätzlich externen Bibliotheken bei Nicht-GUI-Anwendungen. Weiterhin misstraut er allen moderneren Features von C++ (z.Bsp. Templates). Wenn es unbedingt nötig ist geht es aber nichts was über sein Verständnis hinaus geht.<br />
Er will jede Zeile Code kontrollieren und verstehen können. Das geht bei boost schlicht nicht.<br />
Evtl. hast du jetzt eine Vorstellung was ich meine.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242569</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242569</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Thu, 16 Aug 2012 17:05:47 GMT</pubDate></item><item><title><![CDATA[Reply to plattformunabhängiges binäres EOL on Thu, 16 Aug 2012 17:07:06 GMT]]></title><description><![CDATA[<p>Also ist dein Chef ein Idiot, der sich weigert, sich weiterzubilden. Wuerde kuendigen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242570</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242570</guid><dc:creator><![CDATA[Kellerautomat]]></dc:creator><pubDate>Thu, 16 Aug 2012 17:07:06 GMT</pubDate></item><item><title><![CDATA[Reply to plattformunabhängiges binäres EOL on Thu, 16 Aug 2012 17:12:22 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/1387">@Braunstein</a><br />
Ich verstehe nicht ganz was du machen willst.</p>
<p>Wenn du nur Textdateien lesen können möchtest, die auf anderen Systemen erzeugt wurden, und Boost verboten ist, UND du mit iostreams arbeiten willst/musst, ... dann schreib einen eigenen istream.</p>
<p>Der kann dann beim Lesen der Daten folgende einfache Logik anwenden:</p>
<pre><code>last_ch = 0
while (!eof)
    ch = get_next_char()

    if (ch == '\n' &amp;&amp; last_ch == '\r')
        last_ch = 0           -- 2. Teil einer EOL Sequenz gefunden
    else if (ch == '\r' &amp;&amp; last_ch == '\n')
        last_ch = 0           -- 2. Teil einer EOL Sequenz gefunden
    else if (ch == '\r' || ch == '\n')
        last_ch = ch          -- 1. Teil einer EOL Sequenz gefunden
        emit_EOL()
    else
        last_ch = 0
        emit_normal_char(ch)
</code></pre>
<p>Damit kannst du sämtliche Textfiles lesen, du musst nichtmal wissen welche EOL Sequenz verwendet wird. Funktioniert sogar gut mit Textfiles mit &quot;mixed EOL&quot;.</p>
<p>Wenn du Textfiles klein genug sind kannst sie natürlich auch binär in einen <code>std::string/std::vector&lt;char&gt;</code> einlesen, dann eine Funktion drüberlaufen lassen die nach dem Schema oben die Newlines normalisiert, den auf diese Art &quot;normalisierten&quot; String dann in einen <code>std::stringstream</code> stecken, und dann mit dem <code>std::stringstream</code> weiterarbeiten.</p>
<p>Und beim Schreiben kannst du direkt <code>std::ofstream</code> verwenden - der kümmert sich dann darum dass die für die aktuelle Plattform üblichen EOLs generiert werden.</p>
<p>----</p>
<p>Was mich jetzt aber etwas verwirrt, ist: ich sehe hier nirgends die Notwendigkeit rauszubekommen was die aktuelle Plattform für nen EOL Style verwendet.</p>
<p>ps: komisch dass du dann die STL verwenden darfst. Ist auch ne Library die dein Chef nicht mehr verstehen wird, und die wird auch nur von Menschen programmiert, keinen allmächtigen fehlerlosen Programmiergöttern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242572</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242572</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 16 Aug 2012 17:12:22 GMT</pubDate></item><item><title><![CDATA[Reply to plattformunabhängiges binäres EOL on Thu, 16 Aug 2012 17:24:38 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/13960">@hustbaer</a><br />
Ja das geht natürlich so. Ich wollte halt die bestehende Leseroutine nicht groß anfassen und einen Konverter davor schalten. Da hatte ich halt die Idee das auf Binärebene zu machen und da bräuchte ich halt die aktuell auf dem System verwendete Repräsentation.<br />
Wahrscheinlch mal wieder viel zu kompliziert gedacht.</p>
<p>Bezüglich der STL hast du durchaus recht, die hat er aber verstanden. Mal abgesehen davon wäre es etwas schwierig darauf auch noch zu verzichten. dann kann ich ja gleich C machen.</p>
<p>Ich mach jetzt Feierabend</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242576</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242576</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Thu, 16 Aug 2012 17:24:38 GMT</pubDate></item><item><title><![CDATA[Reply to plattformunabhängiges binäres EOL on Thu, 16 Aug 2012 20:17:18 GMT]]></title><description><![CDATA[<p>Braunstein schrieb:</p>
<blockquote>
<p>Ja das geht natürlich so. Ich wollte halt die bestehende Leseroutine nicht groß anfassen und einen Konverter davor schalten.</p>
</blockquote>
<p>Kannst du ja. Der Code oben eignet sich auch super als Konverter.</p>
<blockquote>
<p>Da hatte ich halt die Idee das auf Binärebene zu machen und da bräuchte ich halt die aktuell auf dem System verwendete Repräsentation.</p>
</blockquote>
<p>Öh. Wieso? Eine Funktion die mit allen EOL-Varianten gleichzeitig klarkommt sollte doch reichen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242640</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242640</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 16 Aug 2012 20:17:18 GMT</pubDate></item><item><title><![CDATA[Reply to plattformunabhängiges binäres EOL on Fri, 17 Aug 2012 12:14:21 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich habe jetzt hustbaers Vorschlag aufgegriffen und einen Streambuffer gebastelt der die Konvertierung vornimmt. Bis jetzt scheint das auch zu funktionieren.<br />
Danke für alle Anregungen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242860</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242860</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Fri, 17 Aug 2012 12:14:21 GMT</pubDate></item></channel></rss>