<?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[Datei mit &#x27;Sonderzeichen&#x27; auslesen]]></title><description><![CDATA[<p>Hallo.</p>
<p>Ich habe eine Frage zum Auslesen einer Datei, die in etwa so aussieht.</p>
<blockquote>
<p>//Referenzpunkte (nr,x,y,z):<br />
0 30 25 45<br />
1 ! 6 19<br />
2 ! 5 !<br />
3 35 29 20<br />
4 35 31 20<br />
5 20 35 17<br />
6 30 50 20<br />
7 15 29 45<br />
8 25 50 45</p>
</blockquote>
<p>Normalerweise nehme ich immer folgenden Code zum Auslesen:</p>
<pre><code class="language-cpp">while (getline(datei,zeile)) 
{
		str.str(zeile);
		count=0;			
		while (str &gt;&gt; zahl)
		{
			data[count]=zahl;                    
			count++; 
		}
		// ...mach was mit data
}
</code></pre>
<p>Das Problem ist nun aber, dass 'while (str &gt;&gt; zahl)' bei einem '!' abbrechen wird und daher der Rest der Zeile nicht mehr eingelesen wird. Daduch gehen mir Daten verloren. Wie kann ich das vermeiden? Das Ausrufezeichen steht im übrigen dafür, dass es für diese Koordinate keinen Wert gibt.</p>
<p>Danke.<br />
H.W.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/167704/datei-mit-sonderzeichen-auslesen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 16 Sep 2026 01:31:05 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/167704.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 14 Dec 2006 08:07:38 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Datei mit &#x27;Sonderzeichen&#x27; auslesen on Thu, 14 Dec 2006 08:07:38 GMT]]></title><description><![CDATA[<p>Hallo.</p>
<p>Ich habe eine Frage zum Auslesen einer Datei, die in etwa so aussieht.</p>
<blockquote>
<p>//Referenzpunkte (nr,x,y,z):<br />
0 30 25 45<br />
1 ! 6 19<br />
2 ! 5 !<br />
3 35 29 20<br />
4 35 31 20<br />
5 20 35 17<br />
6 30 50 20<br />
7 15 29 45<br />
8 25 50 45</p>
</blockquote>
<p>Normalerweise nehme ich immer folgenden Code zum Auslesen:</p>
<pre><code class="language-cpp">while (getline(datei,zeile)) 
{
		str.str(zeile);
		count=0;			
		while (str &gt;&gt; zahl)
		{
			data[count]=zahl;                    
			count++; 
		}
		// ...mach was mit data
}
</code></pre>
<p>Das Problem ist nun aber, dass 'while (str &gt;&gt; zahl)' bei einem '!' abbrechen wird und daher der Rest der Zeile nicht mehr eingelesen wird. Daduch gehen mir Daten verloren. Wie kann ich das vermeiden? Das Ausrufezeichen steht im übrigen dafür, dass es für diese Koordinate keinen Wert gibt.</p>
<p>Danke.<br />
H.W.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1191530</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1191530</guid><dc:creator><![CDATA[Hans Wurst]]></dc:creator><pubDate>Thu, 14 Dec 2006 08:07:38 GMT</pubDate></item><item><title><![CDATA[Reply to Datei mit &#x27;Sonderzeichen&#x27; auslesen on Thu, 14 Dec 2006 08:17:43 GMT]]></title><description><![CDATA[<p>Klar, wenn der Stream etwas nicht lesen kann, bleibt er stehen und setzt das failbit. Aber darauf kannst du auch reagieren, indem du eine andere Einlese-Methode verwendest:</p>
<pre><code class="language-cpp">while(count&lt;4)
{
  str&gt;&gt;zahl;
  if(!str)//keine Zahl erkannt
  {
    str.clear();
    if(str.get()=='!')
      zahl=-1;
    else
      break;
  }
  data[count++]=zahl;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1191538</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1191538</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 14 Dec 2006 08:17:43 GMT</pubDate></item><item><title><![CDATA[Reply to Datei mit &#x27;Sonderzeichen&#x27; auslesen on Thu, 14 Dec 2006 08:48:13 GMT]]></title><description><![CDATA[<p>Okay. Danke. Dazu würde ich noch gerne wissen, ob es einen Unterschied gibt in dem Wert, den 'str' liefert, wenn es ans Ende einer Zeile oder an eine Nicht-Zahl trifft?</p>
<p>Ich frage deshalb, weil ich</p>
<pre><code>while(count&lt;4)
</code></pre>
<p>gerne variabel machen möchte. Es gibt nämlich auch einige Zeilen, die mehr als 4 Werte enthalten.</p>
<p>Danke.<br />
H.W.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1191557</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1191557</guid><dc:creator><![CDATA[Hans Wurst]]></dc:creator><pubDate>Thu, 14 Dec 2006 08:48:13 GMT</pubDate></item><item><title><![CDATA[Reply to Datei mit &#x27;Sonderzeichen&#x27; auslesen on Thu, 14 Dec 2006 08:51:37 GMT]]></title><description><![CDATA[<p>Nein, in beiden Fällen ist das failbit gesetzt und str liefert NULL (bzw. !str liefert true). Aber am Zeilenende ist zusätzlich das eofbit gesetzt, das du mit str.eof() abfragen kannst.</p>
<p>(bzw. in meinem obigen Code würde das get() fehlschlagen, wenn ich schon am Zeilenende stehe - und das beendet die Schleife per break)</p>
<p>Edit: Das heißt in diesem Fall, du könntest die Abfrage auch so umgestalten:</p>
<pre><code class="language-cpp">while(!(str&gt;&gt;zahl).eof())
  ...
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1191559</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1191559</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 14 Dec 2006 08:51:37 GMT</pubDate></item></channel></rss>