<?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[Kommentarzeilen trotzdem einlesen]]></title><description><![CDATA[<p>Hi !</p>
<p>ich möchte aus einer Datei, wie unten aufgeführt, Zahlen auslesen:</p>
<p>-9.7 -1.8<br />
-8.6 -2.4<br />
#-7.5 -3<br />
#-6.4 -3.6<br />
-5.3 -4.2<br />
-4.2 -4.8<br />
-3.1 -5.4<br />
-2 -6<br />
-0.9 -6.6</p>
<p>Die erste Spalte stellt übrigens die X Koordinate, die zweite die Y-Koordinate dar, die wie folgt in das X und Y array eingelesen werden.</p>
<p>Ist ja nichts besonders und hab ich im Prinzip so gelöst:</p>
<pre><code class="language-cpp">ReadGridData(ifstream &amp;in, int nY, int, nX)
{	
	double X[nY][nX];
	double Y[nY][nX];
	for (int j = 0; j &lt; nY; j++)
	{
		for (int i = 0; i &lt; nX; i++)
		{
			in &gt;&gt; X[j][i];
			in &gt;&gt; Y[j][i];
		}
	}
}
</code></pre>
<p>Wie aber schon ersehbar, sind einige Zeilen auskommentiert, ich möchte die Zahlen dahinter aber wie gewohnt in das Array einlesen.</p>
<p>Die einzige Idee, die mir bisher kam ist, mit</p>
<pre><code class="language-cpp">char ch;
if (in.get(ch) == &quot;#&quot;)
</code></pre>
<p>auf eine Route überprüfen, und danach wie gewohnt fortverfahren, da ja der Lesezeiger um ein char weitergerückt ist,<br />
und falls != &quot;#&quot; mit dem Lesezeiger wieder um ein Zeichen zurückzugehen.</p>
<p>Aber weder weiß ich wie das funktioniert, noch erscheint mir diese Lösung schön. <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>Wäre um jeden Tip sehr dankbar! <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>
<p>Lieben Gruß,<br />
GiantGeorge</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/124059/kommentarzeilen-trotzdem-einlesen</link><generator>RSS for Node</generator><lastBuildDate>Sun, 23 Aug 2026 21:55:27 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/124059.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 23 Oct 2005 09:44:38 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Kommentarzeilen trotzdem einlesen on Sun, 23 Oct 2005 09:44:38 GMT]]></title><description><![CDATA[<p>Hi !</p>
<p>ich möchte aus einer Datei, wie unten aufgeführt, Zahlen auslesen:</p>
<p>-9.7 -1.8<br />
-8.6 -2.4<br />
#-7.5 -3<br />
#-6.4 -3.6<br />
-5.3 -4.2<br />
-4.2 -4.8<br />
-3.1 -5.4<br />
-2 -6<br />
-0.9 -6.6</p>
<p>Die erste Spalte stellt übrigens die X Koordinate, die zweite die Y-Koordinate dar, die wie folgt in das X und Y array eingelesen werden.</p>
<p>Ist ja nichts besonders und hab ich im Prinzip so gelöst:</p>
<pre><code class="language-cpp">ReadGridData(ifstream &amp;in, int nY, int, nX)
{	
	double X[nY][nX];
	double Y[nY][nX];
	for (int j = 0; j &lt; nY; j++)
	{
		for (int i = 0; i &lt; nX; i++)
		{
			in &gt;&gt; X[j][i];
			in &gt;&gt; Y[j][i];
		}
	}
}
</code></pre>
<p>Wie aber schon ersehbar, sind einige Zeilen auskommentiert, ich möchte die Zahlen dahinter aber wie gewohnt in das Array einlesen.</p>
<p>Die einzige Idee, die mir bisher kam ist, mit</p>
<pre><code class="language-cpp">char ch;
if (in.get(ch) == &quot;#&quot;)
</code></pre>
<p>auf eine Route überprüfen, und danach wie gewohnt fortverfahren, da ja der Lesezeiger um ein char weitergerückt ist,<br />
und falls != &quot;#&quot; mit dem Lesezeiger wieder um ein Zeichen zurückzugehen.</p>
<p>Aber weder weiß ich wie das funktioniert, noch erscheint mir diese Lösung schön. <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>Wäre um jeden Tip sehr dankbar! <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>
<p>Lieben Gruß,<br />
GiantGeorge</p>
]]></description><link>https://www.c-plusplus.net/forum/post/899154</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/899154</guid><dc:creator><![CDATA[GiantGeorge]]></dc:creator><pubDate>Sun, 23 Oct 2005 09:44:38 GMT</pubDate></item><item><title><![CDATA[Reply to Kommentarzeilen trotzdem einlesen on Sun, 23 Oct 2005 10:26:21 GMT]]></title><description><![CDATA[<p>es gibt zumindest ein in.putback(ch), aber da ich eher weniger der c++ freak bin, kann ich Dir auch nicht sagen, ob das die beste lösung ist...</p>
<p><a href="http://www.cplusplus.com/ref/iostream/ifstream/" rel="nofollow">http://www.cplusplus.com/ref/iostream/ifstream/</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/899176</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/899176</guid><dc:creator><![CDATA[happyaura]]></dc:creator><pubDate>Sun, 23 Oct 2005 10:26:21 GMT</pubDate></item><item><title><![CDATA[Reply to Kommentarzeilen trotzdem einlesen on Sun, 23 Oct 2005 10:28:31 GMT]]></title><description><![CDATA[<p>GiantGeorge schrieb:</p>
<blockquote>
<p>Die einzige Idee, die mir bisher kam ist, mit</p>
<pre><code class="language-cpp">char ch;
if (in.get(ch) == &quot;#&quot;)
</code></pre>
<p>auf eine Route überprüfen, und danach wie gewohnt fortverfahren, da ja der Lesezeiger um ein char weitergerückt ist,<br />
und falls != &quot;#&quot; mit dem Lesezeiger wieder um ein Zeichen zurückzugehen.</p>
</blockquote>
<p>Das ist eine Möglichkeit. Für die Umsetzung brauchst du die Methode putback.</p>
<p>Am Beispiel:</p>
<pre><code class="language-cpp">void readData(std::istream&amp; is) {
  for (char c; is.get(c); ) {
    if (c != '#') 
        is.putback(c); 
    double x, y;
    if (! (is &gt;&gt; x &gt;&gt; y) )
      break;
    is &gt;&gt; ws;  // restlichen Whitespace in der Zeile ignorieren (z.B. '\n')
    cout &lt;&lt; x &lt;&lt; &quot; &quot; &lt;&lt; y &lt;&lt; endl;
  }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/899178</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/899178</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Sun, 23 Oct 2005 10:28:31 GMT</pubDate></item><item><title><![CDATA[Reply to Kommentarzeilen trotzdem einlesen on Sun, 23 Oct 2005 19:08:35 GMT]]></title><description><![CDATA[<p>Also, danke dir für die Antwort, sie trifft verdammt gut den Punkt! <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>
<p>Das mit dem Whitespace ist scheinbar tatsächlich ein Problem. Ich versteh nur nicht woher das kommt. Denn ich dachte immer bisher, dass der &gt;&gt; operator ohnehin allen möglichen Whitespace ('\t', '\n' etc.) einfach ignoriert und den Lesezeiger auf den nächsten &quot;normalen&quot; character lenkt.<br />
Wie kann es denn dann sein, dass er whitespace einliest?</p>
<p>Eigentlich ist der Aufbau der Datei etwas komplizierter, z.B.:</p>
<p>#1<br />
#6 5<br />
1.1 1.4</p>
<p>Wenn ich diese 3-Zeiler Datei nun folgendermaßen einlese...</p>
<pre><code class="language-cpp">ReadGridData(ifstream &amp;is){	
	int myNumberOfBlocks;
	char ch;
	double X, Y;

	is.get(ch);
	if (ch != '#'){
        is.putback(ch);
	}

	is &gt;&gt; myNumberOfBlocks;

	if (ch != '#'){
        is.putback(ch);
	}
	is &gt;&gt; X;
	is.get(ch);
	if (ch != '#'){
        is.putback(ch);
	}
	is &gt;&gt; Y;
}
</code></pre>
<p>...liest er myNumberOfBlocks noch korrekt ein, aber schon beim X schreibt er blödsinn (whitespace). <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="😕"
    /><br />
Wie kann das sein wenn nach<br />
is &gt;&gt; myNumberOfBlocks;<br />
doch in diesem Falle automatisch zum Anfang ('#') der 2. Zeile gesprungen sein müsste?</p>
<p>Gruß,<br />
GiantGeorge</p>
]]></description><link>https://www.c-plusplus.net/forum/post/899546</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/899546</guid><dc:creator><![CDATA[GiantGeorge]]></dc:creator><pubDate>Sun, 23 Oct 2005 19:08:35 GMT</pubDate></item><item><title><![CDATA[Reply to Kommentarzeilen trotzdem einlesen on Sun, 23 Oct 2005 20:25:39 GMT]]></title><description><![CDATA[<p>Wenn DU mit get liest, dann liest er aber Zeichenweise und dann werden auch keine Leerzeichen übersprungen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/899615</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/899615</guid><dc:creator><![CDATA[Jester]]></dc:creator><pubDate>Sun, 23 Oct 2005 20:25:39 GMT</pubDate></item><item><title><![CDATA[Reply to Kommentarzeilen trotzdem einlesen on Sun, 23 Oct 2005 21:10:26 GMT]]></title><description><![CDATA[<p>Hmmm ja,<br />
sorry wenn ich mich grad wie der letzte Depp anstell, aber nach dem get kommt ja sofort ein &gt;&gt; und nach dem<br />
is &gt;&gt; myNumberOfBlocks;<br />
z.B. müsste er doch das ganze whitespace-zeugs übergehen und direkt am Beginn der 2. Zeile stehen oder nicht ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/899631</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/899631</guid><dc:creator><![CDATA[GiantGeorge]]></dc:creator><pubDate>Sun, 23 Oct 2005 21:10:26 GMT</pubDate></item><item><title><![CDATA[Reply to Kommentarzeilen trotzdem einlesen on Mon, 24 Oct 2005 06:19:00 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>kannst du nicht getline für deine Lesemethe verwenden? Wäre hier doch mehr als angebracht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/899718</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/899718</guid><dc:creator><![CDATA[BigBoomer]]></dc:creator><pubDate>Mon, 24 Oct 2005 06:19:00 GMT</pubDate></item><item><title><![CDATA[Reply to Kommentarzeilen trotzdem einlesen on Mon, 24 Oct 2005 07:22:09 GMT]]></title><description><![CDATA[<p>GiantGeorge schrieb:</p>
<blockquote>
<p>Hmmm ja,<br />
sorry wenn ich mich grad wie der letzte Depp anstell, aber nach dem get kommt ja sofort ein &gt;&gt; und nach dem<br />
is &gt;&gt; myNumberOfBlocks;</p>
</blockquote>
<p>Ja, nach dem get funktioniert das schon. Nur mit get willste ja das erste Zeichen der neuen Zeile lesen. Dazu muß der Lesezeiger aber auch dort stehen und nicht in der vorigen Zeile vor irgendeinem Leerzeichen oder dem newline.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/899766</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/899766</guid><dc:creator><![CDATA[Jester]]></dc:creator><pubDate>Mon, 24 Oct 2005 07:22:09 GMT</pubDate></item><item><title><![CDATA[Reply to Kommentarzeilen trotzdem einlesen on Mon, 24 Oct 2005 07:28:56 GMT]]></title><description><![CDATA[<p>Wie wär's denn damit:</p>
<p>Jede Zeile mit getline in einen String, gegebenenfalls das Kommentarzeichen entfernen (durch Leerzeichen ersetzen), String in Stringstream, Doubles aus dem Stringstream lesen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/899772</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/899772</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Mon, 24 Oct 2005 07:28:56 GMT</pubDate></item><item><title><![CDATA[Reply to Kommentarzeilen trotzdem einlesen on Mon, 24 Oct 2005 10:56:48 GMT]]></title><description><![CDATA[<p>ahh fantastisch !</p>
<p>hab mich jetzt doch für die &gt;&gt; ws methode entschieden, aber vielen Dank für alle Beiträge ! <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/899943</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/899943</guid><dc:creator><![CDATA[GiantGeorge]]></dc:creator><pubDate>Mon, 24 Oct 2005 10:56:48 GMT</pubDate></item><item><title><![CDATA[Reply to Kommentarzeilen trotzdem einlesen on Mon, 24 Oct 2005 17:19:43 GMT]]></title><description><![CDATA[<p>MFK schrieb:</p>
<blockquote>
<p>Wie wär's denn damit:</p>
<p>Jede Zeile mit getline in einen String, gegebenenfalls das Kommentarzeichen entfernen (durch Leerzeichen ersetzen), String in Stringstream, Doubles aus dem Stringstream lesen.</p>
</blockquote>
<p>Jo, wir könnten es auch zwischendrin nochmal in ne Datei schreiben... oder über's Netz versenden oder so.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/900253</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/900253</guid><dc:creator><![CDATA[Jester]]></dc:creator><pubDate>Mon, 24 Oct 2005 17:19:43 GMT</pubDate></item></channel></rss>