<?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[ifstream -zeilenumbruch und eof]]></title><description><![CDATA[<p>Hey,</p>
<p>ich möchte eine .csv-Datei Einlesen und Bearbeiten. Nun ließt mein Programm am einer Zeile noch einen Zeilenumbruch mit ein, diesen sehe ich im debugger nicht, aber er wird zb. mit Kopiert. Außerdem gibt es am ende einer .csv-Datei immer noch ein &quot;Leerzeichen&quot;, welches ich auch im debugger sehen kann. Nun möchte ich wissen, warum ich dieses Leerzeichen in der .csv-Datei nicht sehe und wie ich mit dem Zeilenumbruch umgehe.</p>
<pre><code>ifstream file_read;
	ofstream file_write;	
	string str;

	file_read.open(&quot;test.csv&quot;, ios::in);
	file_write.open(&quot;test2.csv&quot;, ios_base::out);

	while(!file_read.eof()){
		getline(file_read, str, ';');
		file_write &lt;&lt; str &lt;&lt; ';' &lt;&lt; endl;
	}
</code></pre>
<p>danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/320914/ifstream-zeilenumbruch-und-eof</link><generator>RSS for Node</generator><lastBuildDate>Wed, 22 Jul 2026 13:15:15 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/320914.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 16 Oct 2013 22:24:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to ifstream -zeilenumbruch und eof on Wed, 16 Oct 2013 22:24:23 GMT]]></title><description><![CDATA[<p>Hey,</p>
<p>ich möchte eine .csv-Datei Einlesen und Bearbeiten. Nun ließt mein Programm am einer Zeile noch einen Zeilenumbruch mit ein, diesen sehe ich im debugger nicht, aber er wird zb. mit Kopiert. Außerdem gibt es am ende einer .csv-Datei immer noch ein &quot;Leerzeichen&quot;, welches ich auch im debugger sehen kann. Nun möchte ich wissen, warum ich dieses Leerzeichen in der .csv-Datei nicht sehe und wie ich mit dem Zeilenumbruch umgehe.</p>
<pre><code>ifstream file_read;
	ofstream file_write;	
	string str;

	file_read.open(&quot;test.csv&quot;, ios::in);
	file_write.open(&quot;test2.csv&quot;, ios_base::out);

	while(!file_read.eof()){
		getline(file_read, str, ';');
		file_write &lt;&lt; str &lt;&lt; ';' &lt;&lt; endl;
	}
</code></pre>
<p>danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2360804</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2360804</guid><dc:creator><![CDATA[m.f-g]]></dc:creator><pubDate>Wed, 16 Oct 2013 22:24:23 GMT</pubDate></item><item><title><![CDATA[Reply to ifstream -zeilenumbruch und eof on Thu, 17 Oct 2013 06:11:07 GMT]]></title><description><![CDATA[<p>Probier doch mal dein endl zu entfernen! Das ist evtl der Grund:</p>
<p>getline == leer<br />
+<br />
&quot;\n&quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2360825</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2360825</guid><dc:creator><![CDATA[DKlay13]]></dc:creator><pubDate>Thu, 17 Oct 2013 06:11:07 GMT</pubDate></item><item><title><![CDATA[Reply to ifstream -zeilenumbruch und eof on Thu, 17 Oct 2013 06:47:00 GMT]]></title><description><![CDATA[<p>Dein Dateiende ist falsch, weil Du falsch liest:<br />
Du prüfst zuerst den EOF-Status.<br />
Nun liest Du - dabei kann das Dateiende erreicht werden, trotzdem schreibst Du nochmal. Erst jetzt beim nächsten Schleifendurchlauf erkennst Du, dass das Dateiende eingetreten ist.</p>
<p>Mach das so:</p>
<pre><code>while(getline(file_read, str, ';')){

        file_write &lt;&lt; str &lt;&lt; ';' &lt;&lt; endl;
    }
</code></pre>
<p>Das Zeilenumbruchproblem ist ein anderes. Da Du als Zeilentrenner das ';' nimmst, werden '\n' ganz normal mit eingelesen. Wenn Du das nicht willst, musst Du Dir da etwas anderes überlegen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2360831</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2360831</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Thu, 17 Oct 2013 06:47:00 GMT</pubDate></item><item><title><![CDATA[Reply to ifstream -zeilenumbruch und eof on Thu, 17 Oct 2013 08:27:32 GMT]]></title><description><![CDATA[<p>Das mit der Flag war noch nachvollziehbar. Das womit ich hadere ist der \n Befehl. Wenn ich in die Schleife einen Stop-Punkt setze, kann ich mir ansehen, welche Zeichen wann eingelesen und kopiert werden. Nun ist es so, dass \n niemals eingelesen wird.</p>
<pre><code>while(getline(file_read, str, ';')){

		if(str!=&quot;\n&quot;){
			file_write &lt;&lt; str &lt;&lt; ';' &lt;&lt; endl;
		}	

	}
</code></pre>
<p>Dem entsprechend nutzt es auch nichts, dass ich auf den Zeilenumbruch Prüfe. Ich kann es umgehe, da ich weiß wie meine .csv-Datei aussieht, und ich mitzählen kann und dann die Routine überspringe, aber wirklich sauber ist es nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2360841</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2360841</guid><dc:creator><![CDATA[m.f-g]]></dc:creator><pubDate>Thu, 17 Oct 2013 08:27:32 GMT</pubDate></item><item><title><![CDATA[Reply to ifstream -zeilenumbruch und eof on Thu, 17 Oct 2013 08:39:37 GMT]]></title><description><![CDATA[<p>Also der Zeilenumbruch ist wirklich nervig, ich kann nicht mal mitzählen lassen, da der Zeilenumbruch nicht als &quot;Zeichen&quot; mitgezählt wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2360845</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2360845</guid><dc:creator><![CDATA[m.f-g]]></dc:creator><pubDate>Thu, 17 Oct 2013 08:39:37 GMT</pubDate></item><item><title><![CDATA[Reply to ifstream -zeilenumbruch und eof on Thu, 17 Oct 2013 08:55:12 GMT]]></title><description><![CDATA[<p>Du kannst aber in den eingelesenen Strings nach dem '\n' suchen und da dann mitzählen oder die Dinger entfernen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2360849</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2360849</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Thu, 17 Oct 2013 08:55:12 GMT</pubDate></item><item><title><![CDATA[Reply to ifstream -zeilenumbruch und eof on Thu, 17 Oct 2013 09:02:22 GMT]]></title><description><![CDATA[<p>m.f-g schrieb:</p>
<blockquote>
<pre><code>while(getline(file_read, str, ';')){

		if(str!=&quot;\n&quot;){
			file_write &lt;&lt; str &lt;&lt; ';' &lt;&lt; endl;
		}	
	
	}
</code></pre>
<p>Dem entsprechend nutzt es auch nichts, dass ich auf den Zeilenumbruch Prüfe.</p>
</blockquote>
<p>So geht das eher nicht. Deine Datei sieht ja vermutlich so aus:</p>
<p>eins;zwei;drei;<br />
vier;fünf;sechs;<br />
...</p>
<p>Nun bekommst Du von Deinem getline (Sterne als Begrenzer):<br />
*eins* *zwei* *drei* <em>\nvier</em> ...<br />
weil nach *drei* alles bis zum nächsten ';' gelesen wird. Wenn Du also keine Leerzeichen irgendwo zwischen hast, könnte</p>
<pre><code>if(str[0] == '\n')
  file_write &lt;&lt; str.substr(1) &lt;&lt; ';' &lt;&lt; endl;
else
  file_write &lt;&lt; str &lt;&lt; ';' &lt;&lt; endl;
</code></pre>
<p>funktionieren, aber das kann man ganz sicher auch besser lösen.</p>
<p>Edit:<br />
Ich weiß nicht, wie Du was zählst, aber selbstverständlich ist '\n' ein Zeichen, dass man in dem String finden und auch zählen kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2360850</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2360850</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Thu, 17 Oct 2013 09:02:22 GMT</pubDate></item></channel></rss>