<?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[Stringstream : Liest nicht alle Zeilen ein?]]></title><description><![CDATA[<p>Ich lese eine Datei mit ifstream ein, ungefähr folgendermaßen:</p>
<pre><code class="language-cpp">ifstream fin;  
     fin.open(&quot;/etc/fstab&quot;, ios::in);  

     std::string buffer;  
     while (fin.good())  
     {  
         getline(fin, buffer);  
         cout &lt;&lt; buffer &lt;&lt; endl;  
     }  
     fin.close();
</code></pre>
<p>Es gibt nun aber Situationen, wo ich eine Datei bekomme, die einen Base64-encoded String enthält, der wiederum einen mit AES verschlüsselten Inhalt repräsentiert.</p>
<p>Ich decrypte also Base64 und AES, und danach habe ich den Inhalt in einem std::string.</p>
<p>Nun will ich diesen, wie oben auch, zeilenweise auslesen.<br />
Ich füge also den String einem StringStream hinzu und lese wie gewohnt aus:</p>
<pre><code class="language-cpp">stringstream fin;  
fin &lt;&lt; std::string(/*der string*/);

     std::string buffer;  
     while (fin.good())  
     {  
         getline(fin, buffer);  
         cout &lt;&lt; buffer &lt;&lt; endl;  
     }
</code></pre>
<p>Scheint auf den ersten Blick auch zu funktionieren, jedoch liest er nicht alle Zeilen richtig ein.</p>
<p>Ist die Vorgehensweise falsch?<br />
Ich dachte der StringStream verhält sich in dieser Situation genau so, als würde ich direkt aus dem FileStream lesen.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/273111/stringstream-liest-nicht-alle-zeilen-ein</link><generator>RSS for Node</generator><lastBuildDate>Fri, 28 Aug 2026 10:05:31 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/273111.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 31 Aug 2010 11:16:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Stringstream : Liest nicht alle Zeilen ein? on Tue, 31 Aug 2010 11:16:50 GMT]]></title><description><![CDATA[<p>Ich lese eine Datei mit ifstream ein, ungefähr folgendermaßen:</p>
<pre><code class="language-cpp">ifstream fin;  
     fin.open(&quot;/etc/fstab&quot;, ios::in);  

     std::string buffer;  
     while (fin.good())  
     {  
         getline(fin, buffer);  
         cout &lt;&lt; buffer &lt;&lt; endl;  
     }  
     fin.close();
</code></pre>
<p>Es gibt nun aber Situationen, wo ich eine Datei bekomme, die einen Base64-encoded String enthält, der wiederum einen mit AES verschlüsselten Inhalt repräsentiert.</p>
<p>Ich decrypte also Base64 und AES, und danach habe ich den Inhalt in einem std::string.</p>
<p>Nun will ich diesen, wie oben auch, zeilenweise auslesen.<br />
Ich füge also den String einem StringStream hinzu und lese wie gewohnt aus:</p>
<pre><code class="language-cpp">stringstream fin;  
fin &lt;&lt; std::string(/*der string*/);

     std::string buffer;  
     while (fin.good())  
     {  
         getline(fin, buffer);  
         cout &lt;&lt; buffer &lt;&lt; endl;  
     }
</code></pre>
<p>Scheint auf den ersten Blick auch zu funktionieren, jedoch liest er nicht alle Zeilen richtig ein.</p>
<p>Ist die Vorgehensweise falsch?<br />
Ich dachte der StringStream verhält sich in dieser Situation genau so, als würde ich direkt aus dem FileStream lesen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1946507</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1946507</guid><dc:creator><![CDATA[TheGrudge]]></dc:creator><pubDate>Tue, 31 Aug 2010 11:16:50 GMT</pubDate></item><item><title><![CDATA[Reply to Stringstream : Liest nicht alle Zeilen ein? on Tue, 31 Aug 2010 11:22:29 GMT]]></title><description><![CDATA[<p>Alle Streams verhalten sich gleich, ja. Daher ist anzunehmen, dass hier Unterschiede im Inhalt vorliegen. Endet die Datei eventuell mit einem newline-Zeichen, der String aber nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1946512</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1946512</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 31 Aug 2010 11:22:29 GMT</pubDate></item><item><title><![CDATA[Reply to Stringstream : Liest nicht alle Zeilen ein? on Tue, 31 Aug 2010 13:05:28 GMT]]></title><description><![CDATA[<p>Hmm aber wenn ich nun einfach getline(sstream, buffer) nutze, dann bekomme ich merkwürdige Zeilenumbrüche und kann letztendlich die Zeilen nicht mehr parsen:</p>
<p>original:</p>
<blockquote>
<p>[SETTINGS]<br />
server=aaa<br />
user=bbb<br />
password=ccc<br />
logLevel=4</p>
</blockquote>
<p>kaputter krempel ich umschliesse jede Zeile mit &quot;config line: &lt;a&gt;LINE&lt;/a&gt;&quot;:</p>
<blockquote>
<p>'&lt;/a&gt;g line: &lt;a&gt;'[SETTINGS]<br />
'&lt;/a&gt;g line: &lt;a&gt;'server=aaa<br />
'&lt;/a&gt;g line: &lt;a&gt;'user=bbb<br />
'&lt;/a&gt;g line: &lt;a&gt;'password=ccc<br />
'&lt;/a&gt;g line: &lt;a&gt;'logLevel=4<br />
config line: &lt;a&gt;''&lt;/a&gt;</p>
</blockquote>
<p>Anscheinend wird hier der Carriage-Return nicht richtig ausgewertet?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1946554</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1946554</guid><dc:creator><![CDATA[TheGrudge]]></dc:creator><pubDate>Tue, 31 Aug 2010 13:05:28 GMT</pubDate></item><item><title><![CDATA[Reply to Stringstream : Liest nicht alle Zeilen ein? on Tue, 31 Aug 2010 13:14:59 GMT]]></title><description><![CDATA[<p>Schaue ich den String als HEX an, sehe ich bei jedem Zeilenende 0d0a (also \r\n).<br />
Übergebe ich das nun dem StringStream und laufe durch diesen durch, haben alle Zeilen nur noch (\r). Deswegen geht wohl das Parsen auch nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1946561</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1946561</guid><dc:creator><![CDATA[TheGrudge]]></dc:creator><pubDate>Tue, 31 Aug 2010 13:14:59 GMT</pubDate></item><item><title><![CDATA[Reply to Stringstream : Liest nicht alle Zeilen ein? on Tue, 31 Aug 2010 13:26:28 GMT]]></title><description><![CDATA[<p>Wenn ich manuell alle \r und \n Zeichen lösche, kann ich die Strings wieder parsen.<br />
Komisch... aber immerhin habe ich nun eine Lösung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1946568</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1946568</guid><dc:creator><![CDATA[TheGrudge]]></dc:creator><pubDate>Tue, 31 Aug 2010 13:26:28 GMT</pubDate></item><item><title><![CDATA[Reply to Stringstream : Liest nicht alle Zeilen ein? on Tue, 31 Aug 2010 17:53:27 GMT]]></title><description><![CDATA[<p>Hmm kann es sein das getline() bei einem FileStream anders reagiert als bei einem StringStream?<br />
Es sieht so aus, als würde bei einem FileStream &quot;\r\n&quot; automatisch entfernt werden...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1946692</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1946692</guid><dc:creator><![CDATA[TheGrudge]]></dc:creator><pubDate>Tue, 31 Aug 2010 17:53:27 GMT</pubDate></item><item><title><![CDATA[Reply to Stringstream : Liest nicht alle Zeilen ein? on Tue, 31 Aug 2010 18:00:39 GMT]]></title><description><![CDATA[<p>TheGrudge schrieb:</p>
<blockquote>
<p>Hmm kann es sein das getline() bei einem FileStream anders reagiert als bei einem StringStream?<br />
Es sieht so aus, als würde bei einem FileStream &quot;\r\n&quot; automatisch entfernt werden...</p>
</blockquote>
<p>Das gleiche passiert bei allen Streams.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1946696</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1946696</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 31 Aug 2010 18:00:39 GMT</pubDate></item></channel></rss>