<?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[iostream: Ist es moeglich nextline character anders als whitespace zu behandeln?]]></title><description><![CDATA[<p>Hi,<br />
ich habe ein kleines Problem.<br />
Ich muss zuerst sagen, das ich wirklich nur sehr eingeschraenkt Erfahrung mit C++ Streams habe, von daher hoffe ich das jemanden hier vielleicht gleich eine einfache Loesung einfaellt.</p>
<p>Ich habe das in einer Textdatei stehen.</p>
<p>9 0 6 | 15 14 9<br />
5 | 8<br />
13 4 15 1 15 5 | 1 4 15 14 8 2</p>
<p>Jede Line ist ein Testcase und in der Zeile befinden sich 2 Listen (getrennt mit '|' die ich miteinander multiplizieren muss.</p>
<p>Ich kann leider kein C++11 einsetzen oder die &lt;regex&gt; Biblothek ansonsten haette ich getline() benutzt, den String bei '|' gesplittet und waere dann mit dem std::sregex_token_iterator ueber den String gerannt.</p>
<p>e.g.:</p>
<pre><code>// um eine ungefaehre Idee zu bekommen.
ifstream stream(&quot;text.txt&quot;);
string line;
std::vector&lt;int&gt;cont1;
std::regex ws_re(&quot; &quot;);

while (getline(stream, line))
{
//imagine string splitting
std::sregex_token_iterator t(line.begin(), line.end(), ws_re, -1);
for (t; t != std::sregex_token_iterator(); ++t)
     cont1.push_back(std::stoi(*t));
}
//etc
</code></pre>
<p>Meine naechste Idee war.</p>
<pre><code>string line;
vector&lt;int&gt; cont1;
vector&lt;int&gt; cont2;
bool inFirstList = true;
while(stream &gt;&gt; line)
{
// handle delimiter('|' here
if (inFirstList)
   cont1.emplace_back(std::stoi(line));
else
   cont2.emplace_back(std::stoi(line));
}
</code></pre>
<p>Leider scheitert das daran, dass ich anscheinend nicht das nextline Zeichen intercepten kann und in jeder Line ein eigenstaendiger Testcase steht.<br />
Ich habe die Funktion std::skipws gefunden allerdings behandelt die whitespaces und nextline Zeichen gleich und ich will ja whitespaces skippen.</p>
<p>Vielleicht faellt ja jemandem eine elegante Loesung fuer das Problem ein, ohne manuell durch den String zu rennen und zu parsen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/338111/iostream-ist-es-moeglich-nextline-character-anders-als-whitespace-zu-behandeln</link><generator>RSS for Node</generator><lastBuildDate>Mon, 13 Apr 2026 20:04:46 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/338111.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 24 May 2016 10:55:19 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to iostream: Ist es moeglich nextline character anders als whitespace zu behandeln? on Tue, 24 May 2016 10:58:17 GMT]]></title><description><![CDATA[<p>Hi,<br />
ich habe ein kleines Problem.<br />
Ich muss zuerst sagen, das ich wirklich nur sehr eingeschraenkt Erfahrung mit C++ Streams habe, von daher hoffe ich das jemanden hier vielleicht gleich eine einfache Loesung einfaellt.</p>
<p>Ich habe das in einer Textdatei stehen.</p>
<p>9 0 6 | 15 14 9<br />
5 | 8<br />
13 4 15 1 15 5 | 1 4 15 14 8 2</p>
<p>Jede Line ist ein Testcase und in der Zeile befinden sich 2 Listen (getrennt mit '|' die ich miteinander multiplizieren muss.</p>
<p>Ich kann leider kein C++11 einsetzen oder die &lt;regex&gt; Biblothek ansonsten haette ich getline() benutzt, den String bei '|' gesplittet und waere dann mit dem std::sregex_token_iterator ueber den String gerannt.</p>
<p>e.g.:</p>
<pre><code>// um eine ungefaehre Idee zu bekommen.
ifstream stream(&quot;text.txt&quot;);
string line;
std::vector&lt;int&gt;cont1;
std::regex ws_re(&quot; &quot;);

while (getline(stream, line))
{
//imagine string splitting
std::sregex_token_iterator t(line.begin(), line.end(), ws_re, -1);
for (t; t != std::sregex_token_iterator(); ++t)
     cont1.push_back(std::stoi(*t));
}
//etc
</code></pre>
<p>Meine naechste Idee war.</p>
<pre><code>string line;
vector&lt;int&gt; cont1;
vector&lt;int&gt; cont2;
bool inFirstList = true;
while(stream &gt;&gt; line)
{
// handle delimiter('|' here
if (inFirstList)
   cont1.emplace_back(std::stoi(line));
else
   cont2.emplace_back(std::stoi(line));
}
</code></pre>
<p>Leider scheitert das daran, dass ich anscheinend nicht das nextline Zeichen intercepten kann und in jeder Line ein eigenstaendiger Testcase steht.<br />
Ich habe die Funktion std::skipws gefunden allerdings behandelt die whitespaces und nextline Zeichen gleich und ich will ja whitespaces skippen.</p>
<p>Vielleicht faellt ja jemandem eine elegante Loesung fuer das Problem ein, ohne manuell durch den String zu rennen und zu parsen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2496837</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2496837</guid><dc:creator><![CDATA[Ruvi]]></dc:creator><pubDate>Tue, 24 May 2016 10:58:17 GMT</pubDate></item><item><title><![CDATA[Reply to iostream: Ist es moeglich nextline character anders als whitespace zu behandeln? on Tue, 24 May 2016 11:27:40 GMT]]></title><description><![CDATA[<p><a href="https://www.c-plusplus.net/forum/p1940874#1940874">https://www.c-plusplus.net/forum/p1940874#1940874</a></p>
<p>Wenn du das Forum nach is_endl durchsuchst, findest du auch noch zahlreiche weitere Anwendungsbeispiele: <a href="https://www.google.de/search?&amp;q=is_endl%20site%3Awww.c-plusplus.net" rel="nofollow">Google: is_endl site:www.c-plusplus.net</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2496840</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2496840</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 24 May 2016 11:27:40 GMT</pubDate></item><item><title><![CDATA[Reply to iostream: Ist es moeglich nextline character anders als whitespace zu behandeln? on Tue, 24 May 2016 11:54:00 GMT]]></title><description><![CDATA[<p>Kannst du dich darauf verlassen, dass die Datei korrekt daherkommt?</p>
<pre><code class="language-cpp">std::ifstream test(&quot;text.txt&quot;);

	while (test)
	{
		int i;
		std::string sep;
		std::vector&lt;int&gt; cont1, cont2;

		while (test &gt;&gt; i)
			cont1.push_back(i);
		test.clear();
		test &gt;&gt; sep;

		while (cont2.size() != cont1.size() &amp;&amp; test &gt;&gt; i)
			cont2.push_back(i);

		assert(cont1.size() == cont2.size());
	}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2496841</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2496841</guid><dc:creator><![CDATA[semitoll]]></dc:creator><pubDate>Tue, 24 May 2016 11:54:00 GMT</pubDate></item><item><title><![CDATA[Reply to iostream: Ist es moeglich nextline character anders als whitespace zu behandeln? on Tue, 24 May 2016 12:54:48 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p><a href="https://www.c-plusplus.net/forum/p1940874#1940874">https://www.c-plusplus.net/forum/p1940874#1940874</a></p>
<p>Wenn du das Forum nach is_endl durchsuchst, findest du auch noch zahlreiche weitere Anwendungsbeispiele: <a href="https://www.google.de/search?&amp;q=is_endl%20site%3Awww.c-plusplus.net" rel="nofollow">Google: is_endl site:www.c-plusplus.net</a></p>
</blockquote>
<p>OMG, meinst du etwa Werner Salomons Lösung zu dem Problem?<br />
is_endl.h (<a href="https://www.c-plusplus.net/forum/272390-full">https://www.c-plusplus.net/forum/272390-full</a> )</p>
<p>Um ehrlich zu sein wollte ich nur Newline intercepten und nicht die Frage nachdem Sinn des Lebens lösen.</p>
<p>Ich guck es mir auf jedenfall an.<br />
Ich habe auch keinen Zweifel daran, dass es funktionieren wird aber die Lösung sieht mir einfach verglichen mit der Art/Trivialität des Problems viel zu kompliziert aus.<br />
Auch von der Größe des Codes würde selber parsen aufs gleiche rauskommen und auch viel verständlicher sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2496852</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2496852</guid><dc:creator><![CDATA[Ruvi]]></dc:creator><pubDate>Tue, 24 May 2016 12:54:48 GMT</pubDate></item><item><title><![CDATA[Reply to iostream: Ist es moeglich nextline character anders als whitespace zu behandeln? on Tue, 24 May 2016 13:15:56 GMT]]></title><description><![CDATA[<p>Hallo Ruvi,</p>
<p>auf Newline abzufragen ist in Deinem Fall gar nicht nötig, wie semitoll schon richtig erkannt hat. Du brauchst nur die Zahlen bis '|' zu lesen und anschließend die gleiche Anzahl der Zahlen noch einmal.<br />
Im Gegensatz zu semitoll würde ich nicht auf einen Fehler laufen sondern das nächste Zeichen direkt abfragen. Sieht in etwa so aus:</p>
<pre><code>#include &lt;iostream&gt;
// #include &lt;random&gt;
// #include &lt;cmath&gt;
#include &lt;fstream&gt;
#include &lt;vector&gt;

int main() 
{
    using namespace std;
    ifstream stream( &quot;text.txt&quot; );
    if( !stream.is_open() )
    {
        cerr &lt;&lt; &quot;Fehler beim Oeffnen&quot; &lt;&lt; endl;
        return -2;
    }
    for( ; stream; ) // über alle Testcases
    {
        vector&lt; int &gt; cont1;
        for( char c; stream &gt;&gt; c &amp;&amp; c != '|'; ) // lese bis zum Pipe-Zeichen
        {
            int x;
            if( stream.putback( c ) &gt;&gt; x )
                cont1.push_back( x );
        }
        vector&lt; int &gt; cont2;
        for( int x; cont2.size() &lt; cont1.size() &amp;&amp; stream &gt;&gt; x; ) // Fülle cont2, bis genauso viele Zahlen wie in cont1 enthalten sind
            cont2.push_back( x );
        if( !stream )
            break;      // Lesefehler bzw. Dateiende
                        // Dateiende liegt vor, wenn stream.eof() und cont1.empty() ==true sind

        // -- ab hier stehen 'cont1' und 'cont2' zur Verfügung
        // ...
        ;
    }

    return 0;
}
</code></pre>
<p>Ruvi schrieb:</p>
<blockquote>
<p>OMG, meinst du etwa Werner Salomons Lösung zu dem Problem? ... Auch von der Größe des Codes würde selber parsen aufs gleiche rauskommen und auch viel verständlicher sein.</p>
</blockquote>
<p>Der eigene Code ist immer verständlicher als der von anderen Leuten. Das geht mir genauso <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="😉"
    /><br />
Deshalb wird der gleiche Code ja auch immer wieder neu geschrieben.</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2496856</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2496856</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Tue, 24 May 2016 13:15:56 GMT</pubDate></item><item><title><![CDATA[Reply to iostream: Ist es moeglich nextline character anders als whitespace zu behandeln? on Tue, 24 May 2016 16:34:19 GMT]]></title><description><![CDATA[<p>@suboptimal, Werner</p>
<p>Ah, danke auf die Idee mit dem Counter bin ich nicht gekommen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2496886</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2496886</guid><dc:creator><![CDATA[Ruvi]]></dc:creator><pubDate>Tue, 24 May 2016 16:34:19 GMT</pubDate></item><item><title><![CDATA[Reply to iostream: Ist es moeglich nextline character anders als whitespace zu behandeln? on Thu, 26 May 2016 10:57:46 GMT]]></title><description><![CDATA[<p>Werner mag Leerzeichen gerne, wa?</p>
<p>Hatte anfangs auch immer so Leerzeichen gesetzt, mir es dann aber wieder abgewohnt, weil es irgendwie jeder doof fand.</p>
<p>Aber wenn er das macht darf ich es auch!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2497072</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2497072</guid><dc:creator><![CDATA[Stilfrage]]></dc:creator><pubDate>Thu, 26 May 2016 10:57:46 GMT</pubDate></item><item><title><![CDATA[Reply to iostream: Ist es moeglich nextline character anders als whitespace zu behandeln? on Thu, 26 May 2016 11:05:37 GMT]]></title><description><![CDATA[<p>Stil frage schrieb:</p>
<blockquote>
<pre><code>Werner mag   Leer zeichen   gerne   ,   wa   ? 
Hatte anfangs   auch immer   so Leer zeichen   gesetzt   ,   
mir es dann aber    wieder abgewohnt   ,   weil es irgendwie   
 jeder      doof      fand.
Aber wenn    er das    macht darf    ich es auch    !
</code></pre>
</blockquote>
<p>Klar, darfste.<br />
Ich beschränke mich lieber auf die wenigen, die für die Korrektheit notwenig sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2497074</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2497074</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Thu, 26 May 2016 11:05:37 GMT</pubDate></item><item><title><![CDATA[Reply to iostream: Ist es moeglich nextline character anders als whitespace zu behandeln? on Thu, 26 May 2016 11:12:19 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Stil frage schrieb:</p>
<blockquote>
<pre><code>Werner mag   Leer zeichen   gerne   ,   wa   ? 
Hatte anfangs   auch immer   so Leer zeichen   gesetzt   ,   
mir es dann aber    wieder abgewohnt   ,   weil es irgendwie   
 jeder      doof      fand.
Aber wenn    er das    macht darf    ich es auch    !
</code></pre>
</blockquote>
<p>Klar, darfste.<br />
Ich beschränke mich lieber auf die wenigen, die für die Korrektheit notwenig sind.</p>
</blockquote>
<p>Ne,das...find ich auch nicht(so)schön!Eher ein(gesundes)Mittelmaß!</p>
<p>Mal ehrlich, var = 4 + 5; ist schöner als var=4+5;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2497075</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2497075</guid><dc:creator><![CDATA[Stilfrage]]></dc:creator><pubDate>Thu, 26 May 2016 11:12:19 GMT</pubDate></item><item><title><![CDATA[Reply to iostream: Ist es moeglich nextline character anders als whitespace zu behandeln? on Thu, 26 May 2016 13:51:32 GMT]]></title><description><![CDATA[<p>Stilfrage schrieb:</p>
<blockquote>
<p>Mal ehrlich, var = 4 + 5; ist schöner als var=4+5;</p>
</blockquote>
<p>Nö.<br />
Allein Deine eingestellte Schriftart ist viel zu klein.<br />
Und wer mehr als 80x25 braucht, hat einfach ein Übersichtsproblem.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2497084</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2497084</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Thu, 26 May 2016 13:51:32 GMT</pubDate></item><item><title><![CDATA[Reply to iostream: Ist es moeglich nextline character anders als whitespace zu behandeln? on Thu, 26 May 2016 15:37:27 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Nö</p>
</blockquote>
<p>Doch</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2497089</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2497089</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Thu, 26 May 2016 15:37:27 GMT</pubDate></item><item><title><![CDATA[Reply to iostream: Ist es moeglich nextline character anders als whitespace zu behandeln? on Fri, 27 May 2016 00:52:50 GMT]]></title><description><![CDATA[<p>edit: Ganzen Beitrag weggemacht, Info per Mail ist besser.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2497136</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2497136</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Fri, 27 May 2016 00:52:50 GMT</pubDate></item><item><title><![CDATA[Reply to iostream: Ist es moeglich nextline character anders als whitespace zu behandeln? on Mon, 30 May 2016 10:01:06 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>edit: Ganzen Beitrag weggemacht, Info per Mail ist besser.</p>
</blockquote>
<p>Ich nehme an, das war nicht an mich gerichtet? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2497434</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2497434</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Mon, 30 May 2016 10:01:06 GMT</pubDate></item></channel></rss>