<?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[Formatiert aus Datei lesen]]></title><description><![CDATA[<p>Hallo,<br />
Ich würde gerne formatiert aus einer Datei schreiben, in der Zahlen und Strings in gespeichert werden, zum Beispiel so:</p>
<pre><code>&quot;Ein String steht hier!&quot; 123 &quot;aabc&quot;
</code></pre>
<p>Gibt es dafür eine gute Lösung in C++ (in C gibt es ja <code>fscanf()</code> )?</p>
<p>mfg D3lta</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/293368/formatiert-aus-datei-lesen</link><generator>RSS for Node</generator><lastBuildDate>Sun, 16 Aug 2026 08:53:46 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/293368.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 01 Oct 2011 15:59:02 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Formatiert aus Datei lesen on Sat, 01 Oct 2011 15:59:02 GMT]]></title><description><![CDATA[<p>Hallo,<br />
Ich würde gerne formatiert aus einer Datei schreiben, in der Zahlen und Strings in gespeichert werden, zum Beispiel so:</p>
<pre><code>&quot;Ein String steht hier!&quot; 123 &quot;aabc&quot;
</code></pre>
<p>Gibt es dafür eine gute Lösung in C++ (in C gibt es ja <code>fscanf()</code> )?</p>
<p>mfg D3lta</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2125875</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2125875</guid><dc:creator><![CDATA[D3lta]]></dc:creator><pubDate>Sat, 01 Oct 2011 15:59:02 GMT</pubDate></item><item><title><![CDATA[Reply to Formatiert aus Datei lesen on Sat, 01 Oct 2011 16:01:06 GMT]]></title><description><![CDATA[<blockquote>
<p>Gibt es dafür eine gute Lösung in C++ (in C gibt es ja fscanf())?</p>
</blockquote>
<p>Ja. Die Standardmethoden der Ein-/Ausgabe.</p>
<p>Ohne mehr Information kannst du jedoch keine bessere Antwort erwarten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2125876</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2125876</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 01 Oct 2011 16:01:06 GMT</pubDate></item><item><title><![CDATA[Reply to Formatiert aus Datei lesen on Sat, 01 Oct 2011 16:17:12 GMT]]></title><description><![CDATA[<p>Ich denke, wir haben/hatten dieselbe Frage: <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><a href="http://www.c-plusplus.net/forum/293240" rel="nofollow">http://www.c-plusplus.net/forum/293240</a><br />
bzw. sogar noch passender<br />
<a href="http://www.c-plusplus.net/forum/293076" rel="nofollow">http://www.c-plusplus.net/forum/293076</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2125881</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2125881</guid><dc:creator><![CDATA[thuering]]></dc:creator><pubDate>Sat, 01 Oct 2011 16:17:12 GMT</pubDate></item><item><title><![CDATA[Reply to Formatiert aus Datei lesen on Sat, 01 Oct 2011 16:15:18 GMT]]></title><description><![CDATA[<p>Ich möchte Datensätze, jeweils beendet durch ein Newline-Zeichen ('\n').<br />
Jeder Datensatz besteht aus zwei Strings und einem Integer, jeweils getrennt durch ein Space(' '). Nun möchte ich die Strings in zwei Instanzen von <code>string</code> und die Zahl in einen <code>int</code> speichern. Aber außer der C-Lösung ( <code>fscanf(datei, &quot;%s %i %s&quot;, s1, i, s2);</code> (oder anders (ich habe nie viel C programmiert <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="😉"
    /> )) fällt mir nichts ein...</p>
<p>mfg D3lta</p>
<p>EDIT: zu langsam <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 />
Dank deinem Thread habe ich eine Idee <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f4a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--light_bulb"
      title=":bulb:"
      alt="💡"
    /><br />
Aber gibt es wirklich keine einfachere Lösung in C++?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2125882</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2125882</guid><dc:creator><![CDATA[D3lta]]></dc:creator><pubDate>Sat, 01 Oct 2011 16:15:18 GMT</pubDate></item><item><title><![CDATA[Reply to Formatiert aus Datei lesen on Sat, 01 Oct 2011 16:15:22 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">std::string s1, s2; int i;
while(file &gt;&gt; s1 &gt;&gt; i &gt;&gt; s2)
{
    // tu was damit
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2125884</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2125884</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Sat, 01 Oct 2011 16:15:22 GMT</pubDate></item><item><title><![CDATA[Reply to Formatiert aus Datei lesen on Sat, 01 Oct 2011 16:55:39 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<pre><code class="language-cpp">std::string s1, s2; int i;
while(file &gt;&gt; s1 &gt;&gt; i &gt;&gt; s2)
{
    // tu was damit
}
</code></pre>
</blockquote>
<p>Habe ich auch schon erfolglos probiert...<br />
Denn <code>operator&gt;&gt;</code> liest nur bis zu whitespaces...</p>
<p>mfg D3lta</p>
<p>P.S.: So sollte es gehen, oder?</p>
<pre><code class="language-cpp">string s1, s2;
int i;
char c;
char cs[20];
fstream f;
while(!f.eof())
{
    f &gt;&gt; c; //erstes '&quot;' überlesen
    f.getline(cs, '&quot;');  //ürsprünglich f.getline(s1, '&quot;');
    s1=cs;
    f &gt;&gt; c; //' ' überlesen
    f &gt;&gt; i;
    f &gt;&gt; c &gt;&gt; c; //' ' und '&quot;' überlesen
    f.getline(cs, 20, '&quot;');  //ürsprünglich f.getline(s2, '&quot;');
    s2=cs;
}
</code></pre>
<p>EDIT: <code>getline()</code> ist ja garnicht für <code>string</code> überladen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /> , ich habe es kurz korrigiert <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 />
EDIT2: Es funktioniert immer noch nicht...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2125886</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2125886</guid><dc:creator><![CDATA[D3lta]]></dc:creator><pubDate>Sat, 01 Oct 2011 16:55:39 GMT</pubDate></item><item><title><![CDATA[Reply to Formatiert aus Datei lesen on Sat, 01 Oct 2011 16:57:26 GMT]]></title><description><![CDATA[<p>D3lta schrieb:</p>
<blockquote>
<p>EDIT: <code>getline()</code> ist ja garnicht für <code>string</code> überladen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /> , ich habe es kurz korrigiert <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>
</blockquote>
<p><a href="http://www.cplusplus.com/reference/string/getline/" rel="nofollow">http://www.cplusplus.com/reference/string/getline/</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2125894</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2125894</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Sat, 01 Oct 2011 16:57:26 GMT</pubDate></item><item><title><![CDATA[Reply to Formatiert aus Datei lesen on Sat, 01 Oct 2011 17:10:35 GMT]]></title><description><![CDATA[<p>Danke, mit <code>getline(f, s1, '&quot;');</code> funktioniert er auch fast, wie ich will. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>mfg D3lta</p>
<p>EDIT: Problem gelöst <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /><br />
Hier ist der finale Code, falls irgendjemand noch einmal diesen Thread findet:</p>
<pre><code class="language-cpp">while(!f.eof())
{
    f &gt;&gt; c; //erstes '&quot;' überlesen
    getline(f, s1, '&quot;');
    f &gt;&gt; i;
    f &gt;&gt; c;'&quot;' überlesen
    getline(f, s2, '&quot;');
    cout &lt;&lt; &quot;s1=&quot; &lt;&lt; s1 &lt;&lt; &quot;\ts2=&quot; &lt;&lt; s2 &lt;&lt;&quot;\ti=&quot; &lt;&lt; i &lt;&lt; endl;
}
</code></pre>
<p>Danke an alle, die mir geholfen haben, oder es versucht haben. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2125896</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2125896</guid><dc:creator><![CDATA[D3lta]]></dc:creator><pubDate>Sat, 01 Oct 2011 17:10:35 GMT</pubDate></item><item><title><![CDATA[Reply to Formatiert aus Datei lesen on Sat, 01 Oct 2011 17:12:27 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">while(!f.eof())
</code></pre>
<p>ist trotzdme noch falsch. Es muss</p>
<pre><code class="language-cpp">while(f)
</code></pre>
<p>heißen <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2125900</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2125900</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Sat, 01 Oct 2011 17:12:27 GMT</pubDate></item><item><title><![CDATA[Reply to Formatiert aus Datei lesen on Sat, 01 Oct 2011 17:26:50 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<pre><code class="language-cpp">while(!f.eof())
</code></pre>
<p>ist trotzdme noch falsch. Es muss</p>
<pre><code class="language-cpp">while(f)
</code></pre>
<p>heißen <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>
</blockquote>
<p>Warum?<br />
Es funktioniert auch mit <code>!f.eof()</code> .<br />
Und gibt es eine noch kürzere oder einfachere Lösung?</p>
<p>mfg D3lta</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2125904</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2125904</guid><dc:creator><![CDATA[D3lta]]></dc:creator><pubDate>Sat, 01 Oct 2011 17:26:50 GMT</pubDate></item><item><title><![CDATA[Reply to Formatiert aus Datei lesen on Sat, 01 Oct 2011 17:49:49 GMT]]></title><description><![CDATA[<p>Weil du bei einem Lesefehler sonst in eine Endlosschleife kommst.<br />
Und &quot;funktioniert&quot; ist nicht gleich funktioniert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2125907</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2125907</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Sat, 01 Oct 2011 17:49:49 GMT</pubDate></item><item><title><![CDATA[Reply to Formatiert aus Datei lesen on Sat, 01 Oct 2011 17:52:17 GMT]]></title><description><![CDATA[<p>Was machst du eigentlich, wenn in deiner Datei eine Zeile vorkommt, die nicht genau deinem geparsten Format entspricht? Z.B. eine Leerzeile?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2125908</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2125908</guid><dc:creator><![CDATA[Wutz]]></dc:creator><pubDate>Sat, 01 Oct 2011 17:52:17 GMT</pubDate></item><item><title><![CDATA[Reply to Formatiert aus Datei lesen on Sat, 01 Oct 2011 17:52:53 GMT]]></title><description><![CDATA[<p>Falsch kann es nicht dem Sinne nicht sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2125909</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2125909</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Sat, 01 Oct 2011 17:52:53 GMT</pubDate></item><item><title><![CDATA[Reply to Formatiert aus Datei lesen on Sat, 01 Oct 2011 20:27:15 GMT]]></title><description><![CDATA[<p>Wutz schrieb:</p>
<blockquote>
<p>Was machst du eigentlich, wenn in deiner Datei eine Zeile vorkommt, die nicht genau deinem geparsten Format entspricht? Z.B. eine Leerzeile?</p>
</blockquote>
<p>Die Leerzeile hat das Programm erfolgreich pariert <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 />
Und für die anderen Fälle müsste man nach jedem Lesen überprüfen, ob ein Bit gesetzt ist?<br />
Ungefähr so?:</p>
<pre><code class="language-cpp">if(!f) break;
</code></pre>
<p>314159265358979 schrieb:</p>
<blockquote>
<p>Weil du bei einem Lesefehler sonst in eine Endlosschleife kommst.<br />
Und &quot;funktioniert&quot; ist nicht gleich funktioniert.</p>
</blockquote>
<p>Gibt <code>f</code>  <code>false</code> zurück, wenn irgendein Bit, wie zum Beispiel <code>eof</code> , gestzt ist?</p>
<p>mfg D3lta</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2125957</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2125957</guid><dc:creator><![CDATA[D3lta]]></dc:creator><pubDate>Sat, 01 Oct 2011 20:27:15 GMT</pubDate></item><item><title><![CDATA[Reply to Formatiert aus Datei lesen on Sat, 01 Oct 2011 21:32:13 GMT]]></title><description><![CDATA[<p>D3lta schrieb:</p>
<blockquote>
<p>Gibt <code>f</code>  <code>false</code> zurück, wenn irgendein Bit, wie zum Beispiel <code>eof</code> , gestzt ist?</p>
</blockquote>
<p><a href="http://www.cplusplus.com/reference/iostream/ios/operator_voidpt/" rel="nofollow">Ja! (genauer gesagt Null oder nicht-Null)</a></p>
<p>Und außerdem geben die ganzen Einlesefunktionen die Streams selber zurück. Das kann man sowohl nutzen, um die Streams direkt auszuwerten oder um weitere Lesefunktionen auf sie anzuwenden.</p>
<p>Und mit diesen beiden Eigenschaften der Streams kann man die ganzen schönen Einleseschleifen bauen, wie man sie hier im Forum (und in <strong>guten</strong> Büchern) immer sieht. Super kurz, super robust, super mächtig, super sorgenfrei. Mit den anderen Varianten macht man sich bloß selber das Leben schwer.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2125973</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2125973</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 01 Oct 2011 21:32:13 GMT</pubDate></item><item><title><![CDATA[Reply to Formatiert aus Datei lesen on Sat, 01 Oct 2011 21:56:36 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>D3lta schrieb:</p>
<blockquote>
<p>Gibt <code>f</code>  <code>false</code> zurück, wenn irgendein Bit, wie zum Beispiel <code>eof</code> , gestzt ist?</p>
</blockquote>
<p><a href="http://www.cplusplus.com/reference/iostream/ios/operator_voidpt/" rel="nofollow">Ja! (genauer gesagt Null oder nicht-Null)</a></p>
<p>Und außerdem geben die ganzen Einlesefunktionen die Streams selber zurück. Das kann man sowohl nutzen, um die Streams direkt auszuwerten oder um weitere Lesefunktionen auf sie anzuwenden.</p>
<p>Und mit diesen beiden Eigenschaften der Streams kann man die ganzen schönen Einleseschleifen bauen, wie man sie hier im Forum (und in <strong>guten</strong> Büchern) immer sieht. Super kurz, super robust, super mächtig, super sorgenfrei. Mit den anderen Varianten macht man sich bloß selber das Leben schwer.</p>
</blockquote>
<p>Dann ist mein Buch wohl wirklich kein gutes Buch... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /><br />
Ist der Code dann so besser?</p>
<pre><code class="language-cpp">while(f)
{
    f &gt;&gt; c; //erstes '&quot;' überlesen
    if(!f) break;
    getline(f, s1, '&quot;');
    if(!f) break;
    f &gt;&gt; i;
    if(!f) break;
    f &gt;&gt; c;'&quot;' überlesen
    if(!f) break;
    getline(f, s2, '&quot;');
    if(!f) break;
    cout &lt;&lt; &quot;s1=&quot; &lt;&lt; s1 &lt;&lt; &quot;\ts2=&quot; &lt;&lt; s2 &lt;&lt;&quot;\ti=&quot; &lt;&lt; i &lt;&lt; endl;
}
</code></pre>
<p>mfg D3lta</p>
<p>P.S.: (Etwas weg vom Thema <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="😉"
    /> ) Gibt es hierfür eine Lösung?</p>
<pre><code class="language-cpp">typedef vector&lt;A*&gt; AptrV;
class A
{
private:
    AptrV aptrv;
//...
}
</code></pre>
<p>Also ich will ein typedef einer Klasse global definieren, es aber in der Klasse verwenden. Mir fällt nichts ein, womit man das Problem lösen kann...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2125978</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2125978</guid><dc:creator><![CDATA[D3lta]]></dc:creator><pubDate>Sat, 01 Oct 2011 21:56:36 GMT</pubDate></item><item><title><![CDATA[Reply to Formatiert aus Datei lesen on Sun, 02 Oct 2011 10:04:16 GMT]]></title><description><![CDATA[<p>D3lta schrieb:</p>
<blockquote>
<p>Ist der Code dann so besser?</p>
</blockquote>
<p>Kommt es dir besser vor? Besser als vorher vielleicht. Gut? Ich denke mal nicht.</p>
<blockquote>
<pre><code class="language-cpp">while(f)
{
    f &gt;&gt; c; //erstes '&quot;' überlesen
    if(!f) break;
    getline(f, s1, '&quot;');
    if(!f) break;
    f &gt;&gt; i;
    if(!f) break;
    f &gt;&gt; c;'&quot;' überlesen
    if(!f) break;
    getline(f, s2, '&quot;');
    if(!f) break;
    cout &lt;&lt; &quot;s1=&quot; &lt;&lt; s1 &lt;&lt; &quot;\ts2=&quot; &lt;&lt; s2 &lt;&lt;&quot;\ti=&quot; &lt;&lt; i &lt;&lt; endl;
}
</code></pre>
</blockquote>
<p>1. Wieso prüfst du nach jeder einzelnen Leseaktion? Wenn ein Fehler auftritt, wird sowieso nicht weitergelesen. Das kann man also äquivalent schreiben als:</p>
<pre><code class="language-cpp">while(f)
{
    f &gt;&gt; c; //erstes '&quot;' überlesen
    getline(f, s1, '&quot;');
    f &gt;&gt; i;
    f &gt;&gt; c;'&quot;' überlesen
    getline(f, s2, '&quot;');
    if(!f) break;
    cout &lt;&lt; &quot;s1=&quot; &lt;&lt; s1 &lt;&lt; &quot;\ts2=&quot; &lt;&lt; s2 &lt;&lt;&quot;\ti=&quot; &lt;&lt; i &lt;&lt; endl;
}
</code></pre>
<p>2. Wie dir schon gesagt wurde, kann man Lesefunktionan auch aneinander hängen. Immer noch 100% äquivalent zu deinem vorherigen Code:</p>
<pre><code class="language-cpp">while(f)
{
    getline((getline(f &gt;&gt; c, s1, '&quot;') &gt;&gt; i &gt;&gt; c), s2, '&quot;');
    if(!f) break;
    cout &lt;&lt; &quot;s1=&quot; &lt;&lt; s1 &lt;&lt; &quot;\ts2=&quot; &lt;&lt; s2 &lt;&lt;&quot;\ti=&quot; &lt;&lt; i &lt;&lt; endl;
}
</code></pre>
<p>Über diese &quot;Vereinfachung&quot; kann man streiten, da es doch recht schwer zu lesen ist. Aber es macht das nächste einfacher:</p>
<p>3. Was soll der Unsinn mit dem while(f) und break? Du scheinst überhaupot nicht verstanden zu haben, was man dir hier im Thread erklären wollte. Wann bitte sollte f in der while-Bedingung jemals false sein (außer eventuell vor dem ersten Eintritt)? Genausogut hättest du auch while(true) scheiben können. Worauf man hier im Thread hinaus will, ist dies:</p>
<pre><code class="language-cpp">while(getline((getline(f &gt;&gt; c, s1, '&quot;') &gt;&gt; i &gt;&gt; c), s2, '&quot;'))
  cout &lt;&lt; &quot;s1=&quot; &lt;&lt; s1 &lt;&lt; &quot;\ts2=&quot; &lt;&lt; s2 &lt;&lt;&quot;\ti=&quot; &lt;&lt; i &lt;&lt; endl;
</code></pre>
<p>Da. Macht immer noch genau das gleiche wie vorher. Die while-Bedingung liest die Werte ein, geht was schief, wird abgebrochen, ansonsten geht's in die Ausgabe.</p>
<p>Wenn du nun noch eine hübsche Klasse für deine Daten definierst mit einem schönen Einleseoperator der alles schön kapselt, dann ist die while-Bedingung auch nicht mehr so ein Monstrum, sondern würde eher so aussehen:</p>
<pre><code class="language-cpp">// Oben werden ein paar Klassen und Funktionen definiert

while(f &gt;&gt; dein_datenobjekt)
  cout &lt;&lt; dein_datenobjekt &lt;&lt; endl;
</code></pre>
<p>Und jetzt vergleich das mal zu dem was du ursprünglich hattest. Und dann kann man auch die Frage beantworten: Besser? Ja! Gut? Ja!</p>
<blockquote>
<p>P.S.: (Etwas weg vom Thema <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="😉"
    /> ) Gibt es hierfür eine Lösung?</p>
<pre><code class="language-cpp">typedef vector&lt;A*&gt; AptrV;
class A
{
private:
    AptrV aptrv;
//...
}
</code></pre>
<p>Also ich will ein typedef einer Klasse global definieren, es aber in der Klasse verwenden. Mir fällt nichts ein, womit man das Problem lösen kann...</p>
</blockquote>
<p>Forward-Deklaration?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2126116</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2126116</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 02 Oct 2011 10:04:16 GMT</pubDate></item><item><title><![CDATA[Reply to Formatiert aus Datei lesen on Sun, 02 Oct 2011 14:59:21 GMT]]></title><description><![CDATA[<p>Gut so ist es viel einfacher... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f4a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--light_bulb"
      title=":bulb:"
      alt="💡"
    /><br />
Und was ist Forward-Deklaration?</p>
<p>mfg D3lta</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2126260</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2126260</guid><dc:creator><![CDATA[D3lta]]></dc:creator><pubDate>Sun, 02 Oct 2011 14:59:21 GMT</pubDate></item><item><title><![CDATA[Reply to Formatiert aus Datei lesen on Sun, 02 Oct 2011 15:03:17 GMT]]></title><description><![CDATA[<p>D3lta schrieb:</p>
<blockquote>
<p>Und was ist Forward-Deklaration?</p>
</blockquote>
<p>Wenn man dem Compiler beschewid sagt, daß es eine Klasse später gibt. Dann kann er schonmal Zeiger auf A machen und A als Referenz, Funktionsparameter oder Rückgabe verwenden.</p>
<pre><code class="language-cpp">class A;//nur bescheid gesagt

typedef vector&lt;A*&gt; AptrV;//Deswegen geht A* hier schon. 

class A //Definition nachgeholt
 { 
private: 
     AptrV aptrv; 
//... 
 };
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2126261</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2126261</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 02 Oct 2011 15:03:17 GMT</pubDate></item><item><title><![CDATA[Reply to Formatiert aus Datei lesen on Sun, 02 Oct 2011 15:13:13 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>D3lta schrieb:</p>
<blockquote>
<p>Und was ist Forward-Deklaration?</p>
</blockquote>
<p>Wenn man dem Compiler beschewid sagt, daß es eine Klasse später gibt. Dann kann er schonmal Zeiger auf A machen und A als Referenz, Funktionsparameter oder Rückgabe verwenden.</p>
<pre><code class="language-cpp">class A;//nur bescheid gesagt

typedef vector&lt;A*&gt; AptrV;//Deswegen geht A* hier schon. 

class A //Definition nachgeholt
 { 
private: 
     AptrV aptrv; 
//... 
 };
</code></pre>
</blockquote>
<p>Danke, ich hatte es schon einmal probiert, aber ich habe keine Ahnung, was ich da falschgemacht hatte. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /><br />
Ich kannte das bisher nur von Funktionen...</p>
<p>mfg D3lta</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2126265</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2126265</guid><dc:creator><![CDATA[D3lta]]></dc:creator><pubDate>Sun, 02 Oct 2011 15:13:13 GMT</pubDate></item></channel></rss>