<?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[3-Werte auslesen, speichern und verrechnen]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich habe in einer Textdatei 3 Zahlenwerte:</p>
<blockquote>
<p>W1=268<br />
W2=236<br />
W4=21</p>
</blockquote>
<p>Diese müsste ich zuerst einlesen und abspeichern. diese heißen immer W1, W2 und W4 !</p>
<p>Diese Werte möchte ich immer wie folgt berechnen und ausgeben:</p>
<blockquote>
<p>(W2/2 - W1/2)/W4</p>
</blockquote>
<p>Daher meine Frage:<br />
1. Ich durchsuche die Zeile nach dem W1=, aber wie komme ich an den Zahlenwert, um ihn abzupeichern ?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/284422/3-werte-auslesen-speichern-und-verrechnen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 21 Aug 2026 22:06:44 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/284422.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 01 Apr 2011 06:21:51 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to 3-Werte auslesen, speichern und verrechnen on Fri, 01 Apr 2011 06:21:51 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich habe in einer Textdatei 3 Zahlenwerte:</p>
<blockquote>
<p>W1=268<br />
W2=236<br />
W4=21</p>
</blockquote>
<p>Diese müsste ich zuerst einlesen und abspeichern. diese heißen immer W1, W2 und W4 !</p>
<p>Diese Werte möchte ich immer wie folgt berechnen und ausgeben:</p>
<blockquote>
<p>(W2/2 - W1/2)/W4</p>
</blockquote>
<p>Daher meine Frage:<br />
1. Ich durchsuche die Zeile nach dem W1=, aber wie komme ich an den Zahlenwert, um ihn abzupeichern ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2043050</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2043050</guid><dc:creator><![CDATA[KarstenHaun]]></dc:creator><pubDate>Fri, 01 Apr 2011 06:21:51 GMT</pubDate></item><item><title><![CDATA[Reply to 3-Werte auslesen, speichern und verrechnen on Fri, 01 Apr 2011 06:51:31 GMT]]></title><description><![CDATA[<p>Moin,</p>
<p>wie ließt du aus der Datei ein?<br />
Wenn die eingelesenen Zeichen in einem string stehen, kannst du mit string::substr() <a href="http://www.cplusplus.com/reference/string/string/substr/" rel="nofollow">http://www.cplusplus.com/reference/string/string/substr/</a> die Zeichen nach dem = extrahieren. Diese stehen dann in einem neuen string. Den kannst du jetzt mit einem stringstream in einen int umwandeln, wenn nötig.</p>
<p>Mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2043057</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2043057</guid><dc:creator><![CDATA[Firewall]]></dc:creator><pubDate>Fri, 01 Apr 2011 06:51:31 GMT</pubDate></item><item><title><![CDATA[Reply to 3-Werte auslesen, speichern und verrechnen on Fri, 01 Apr 2011 07:46:18 GMT]]></title><description><![CDATA[<p>Firewall schrieb:</p>
<blockquote>
<p>Wenn die eingelesenen Zeichen in einem string stehen, kannst du mit string::substr() <a href="http://www.cplusplus.com/reference/string/string/substr/" rel="nofollow">http://www.cplusplus.com/reference/string/string/substr/</a> die Zeichen nach dem = extrahieren.</p>
</blockquote>
<p>Diese Hinweise den Inhalt als String zu lesen und ihn anschließend zu parsen sind aber auch nicht tot zu kriegen <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="🙄"
    /></p>
<p>ich habe jetzt was interessantes dazu gelesen: <a href="http://cpp-next.com/archive/2010/10/expressive-c-expression-extension-part-two/" rel="nofollow">Eric Niebler schreibt</a>:</p>
<blockquote>
<p>1 &lt;&lt; 8 is a C++ expression ... Interestingly, nobody thinks to wonder what it means to left-shift std::cout by the amount &quot;hello world&quot;. In the context of output stream operations, &lt;&lt; means something else entirely. (<strong>To this day, some folks have a hard time accepting that. Those folks should read no further.</strong>)</p>
</blockquote>
<p>Nur zur Info: man kann auch einen double oder int aus einer Datei lesen. z.B. mit</p>
<pre><code class="language-cpp">double wert;
    string key; 
    getline( datei &gt;&gt; ws, key, '=' ) &gt;&gt; wert;
</code></pre>
<p>einlesen.</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2043070</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2043070</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Fri, 01 Apr 2011 07:46:18 GMT</pubDate></item><item><title><![CDATA[Reply to 3-Werte auslesen, speichern und verrechnen on Fri, 01 Apr 2011 08:14:37 GMT]]></title><description><![CDATA[<p>Werner Salomon schrieb:</p>
<blockquote>
<p>Firewall schrieb:</p>
<blockquote>
<p>Wenn die eingelesenen Zeichen in einem string stehen, kannst du mit string::substr() <a href="http://www.cplusplus.com/reference/string/string/substr/" rel="nofollow">http://www.cplusplus.com/reference/string/string/substr/</a> die Zeichen nach dem = extrahieren.</p>
</blockquote>
<p>Diese Hinweise den Inhalt als String zu lesen und ihn anschließend zu parsen sind aber auch nicht tot zu kriegen <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="🙄"
    /></p>
</blockquote>
<p>Was ist jetzt so falsch daran? Es ist ja nur eine Möglichkeit von vielen.<br />
Dass der &lt;&lt; Operator beim cout was anderes ist, als der shift Operator, is ja wohl klar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2043079</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2043079</guid><dc:creator><![CDATA[Firewall]]></dc:creator><pubDate>Fri, 01 Apr 2011 08:14:37 GMT</pubDate></item><item><title><![CDATA[Reply to 3-Werte auslesen, speichern und verrechnen on Fri, 01 Apr 2011 19:59:29 GMT]]></title><description><![CDATA[<p>Firewall schrieb:</p>
<blockquote>
<p>Werner Salomon schrieb:</p>
<blockquote>
<p>Firewall schrieb:</p>
<blockquote>
<p>Wenn die eingelesenen Zeichen in einem string stehen, kannst du mit string::substr() <a href="http://www.cplusplus.com/reference/string/string/substr/" rel="nofollow">http://www.cplusplus.com/reference/string/string/substr/</a> die Zeichen nach dem = extrahieren.</p>
</blockquote>
<p>Diese Hinweise den Inhalt als String zu lesen und ihn anschließend zu parsen sind aber auch nicht tot zu kriegen <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="🙄"
    /></p>
</blockquote>
<p>Was ist jetzt so falsch daran? Es ist ja nur eine Möglichkeit von vielen.</p>
</blockquote>
<p>Hallo Firewall,</p>
<p>Das passiert hier häufiger: ein mutmaßlicher Anfänger fragt danach, wie man an einer bestimmter Stelle in einer Datei irgendetwas ausliest. Manchmal vergeht keine halbe Stunde, bis sich eine, zwei oder mehr Antworten finden, die alle lauten: lies die Datei mit getline ein und nehme die strings mit find/substr &amp; Co auseinander.</p>
<p>Es ist in C++ genau eine Möglichkeit vorgesehen, eine Zahl zu lesen, und zwar mit dem operator&gt;&gt;double (bzw. int usw.). Daneben gibt es noch eine Unzahl von Hilfsmitteln aus der iostream-Library, die Eingabe von Daten zu gestalten. Man kann nun beobachten, dass diese Funktionalität von vielen Leuten schlicht ignoriert wird. Und das ist nervig - da ist die Autobahn, auf der man fahren könnte, und es wird darüber diskutiert, wie man auf Nebenstraßen am besten an's Ziel kommt.</p>
<p>Ich würde mir wünschen, wenn sich mehr Leute mit den Möglichkeiten, die i- und ostream bieten, auseinander setzen. Darüber möchte ich gerne diskutieren, statt mit anzusehen, wie man sich immer wieder daran vorbei mogelt. Und ich freue mich auch auf weitere Beiträge von Dir.</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2043443</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2043443</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Fri, 01 Apr 2011 19:59:29 GMT</pubDate></item><item><title><![CDATA[Reply to 3-Werte auslesen, speichern und verrechnen on Fri, 01 Apr 2011 20:05:41 GMT]]></title><description><![CDATA[<p>Firewall schrieb:</p>
<blockquote>
<p>Was ist jetzt so falsch daran? Es ist ja nur eine Möglichkeit von vielen.</p>
</blockquote>
<p>Der Kreis, in dem man sich drecht.</p>
<p>Man lädt mit getline eine Zeile in einen string. Und wie einen string am besten parsen? Also sobald die Zeilen wen wenig kompelxer werden, willst Du es nicht mehr anders machen, als den string in einen stringstream zu laden und aus ihm mit getline, get und &lt;&lt; die Daten zu holen.<br />
Aber dann kann man auch direkt mit getline, get und &lt;&lt; die Daten aus der Datei holen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2043451</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2043451</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Fri, 01 Apr 2011 20:05:41 GMT</pubDate></item><item><title><![CDATA[Reply to 3-Werte auslesen, speichern und verrechnen on Fri, 01 Apr 2011 20:10:56 GMT]]></title><description><![CDATA[<p>Werner Salomon schrieb:</p>
<blockquote>
<p>Es ist in C++ genau eine Möglichkeit vorgesehen, eine Zahl zu lesen, und zwar mit dem operator&gt;&gt;double (bzw. int usw.).</p>
</blockquote>
<p>Naja, das würde ich nicht so eng sehen.<br />
Also mich würde</p>
<pre><code class="language-cpp">getline( datei &gt;&gt; ws, key, '=' ) &gt;&gt; wert;
</code></pre>
<p>erschrecken. Viel zu kompliziert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2043454</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2043454</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Fri, 01 Apr 2011 20:10:56 GMT</pubDate></item><item><title><![CDATA[Reply to 3-Werte auslesen, speichern und verrechnen on Fri, 01 Apr 2011 20:16:28 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Also mich würde</p>
<pre><code class="language-cpp">getline( datei &gt;&gt; ws, key, '=' ) &gt;&gt; wert;
</code></pre>
<p>erschrecken. Viel zu kompliziert.</p>
</blockquote>
<p>Ich weiß, dass Du das kompliziert findest. Das ist Gewohnheit. Ich finde es einfach. Du bist doch immer für einfache Lösungen .. bloss was ist einfach? <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>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2043458</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2043458</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Fri, 01 Apr 2011 20:16:28 GMT</pubDate></item><item><title><![CDATA[Reply to 3-Werte auslesen, speichern und verrechnen on Fri, 01 Apr 2011 20:27:03 GMT]]></title><description><![CDATA[<p>Werner Salomon schrieb:</p>
<blockquote>
<p>Du bist doch immer für einfache Lösungen .. bloss was ist einfach? <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>Drei Dinge, die nacheinander passieren sollen, auch untereinander zu schreiben.</p>
<p>Die Gewohnheit, das zusammenzufummeln, kommt daher, daß da eh ein while noch drumgebaut werden könnte, nehmen ich an.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2043462</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2043462</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Fri, 01 Apr 2011 20:27:03 GMT</pubDate></item><item><title><![CDATA[Reply to 3-Werte auslesen, speichern und verrechnen on Sat, 02 Apr 2011 05:40:21 GMT]]></title><description><![CDATA[<p>Werner Salomon schrieb:</p>
<blockquote>
<pre><code class="language-cpp">getline( datei &gt;&gt; ws, key, '=' ) &gt;&gt; wert;
</code></pre>
</blockquote>
<p>Sollte das nicht</p>
<pre><code class="language-cpp">getline( datei , key, '=' ) &gt;&gt; ws &gt;&gt; wert;
</code></pre>
<p>heißen?</p>
<p>Vielleicht verstehe ich das auch falsch, aber das Ziel ist doch, daß bei</p>
<pre><code>x=   3
</code></pre>
<p>nicht 0 herauskommt, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2043540</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2043540</guid><dc:creator><![CDATA[thomas___]]></dc:creator><pubDate>Sat, 02 Apr 2011 05:40:21 GMT</pubDate></item><item><title><![CDATA[Reply to 3-Werte auslesen, speichern und verrechnen on Sat, 02 Apr 2011 09:46:59 GMT]]></title><description><![CDATA[<p>Salomon, du könntest ja auch einen Artikel über die Möglichkeiten von i- und ostream schreiben, dann könntest du das allen ja mal zeigen^^</p>
<p>Denn die Möglichkeiten der Bibliothek werden in vielen Büchern erst viel später gezeigt. Aber viel früher wird mit Dateien hantiert, sodass es nur logisch ist, dass soetwas dabei herumkommt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2043607</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2043607</guid><dc:creator><![CDATA[Incocnito]]></dc:creator><pubDate>Sat, 02 Apr 2011 09:46:59 GMT</pubDate></item><item><title><![CDATA[Reply to 3-Werte auslesen, speichern und verrechnen on Sat, 02 Apr 2011 13:24:09 GMT]]></title><description><![CDATA[<p>Werner Salomon schrieb:</p>
<blockquote>
<p>Es ist in C++ genau eine Möglichkeit vorgesehen, eine Zahl zu lesen, und zwar mit dem operator&gt;&gt;double (bzw. int usw.). Daneben gibt es noch eine Unzahl von Hilfsmitteln aus der iostream-Library, die Eingabe von Daten zu gestalten. Man kann nun beobachten, dass diese Funktionalität von vielen Leuten schlicht ignoriert wird. Und das ist nervig - da ist die Autobahn, auf der man fahren könnte, und es wird darüber diskutiert, wie man auf Nebenstraßen am besten an's Ziel kommt.</p>
</blockquote>
<p>Beim Durchlesen deiner postings hatte ich viele &quot;Aha&quot;s und &quot;Sehr schön gelöst&quot;-Gedanken. Auf viele deiner Lösungen wäre ich nicht gekommen - hätte meist intuitiv eine trivialere und weniger elegantere Lösung programmiert.</p>
<p>Nun stellt sich mir die Frage: Wie hast du dir dein Wissen und deinen Stil angeeignet. In den meisten Büchern werden die Möglichkeiten entweder garnicht so umfangreich erläutert, oder aber es fehlt an Beispielen für elegante und effiziente Umsetzungen. Allein das Wissen über die Existenz bestimmter Funktionen, Klassen etc. reicht nunmal oft nicht aus, diese auch sinnvoll zu nutzen.</p>
<p>Kannst du Literatur zu diesem Thema empfehlen oder von mir aus auch Tutorials?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2043714</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2043714</guid><dc:creator><![CDATA[inter2k3]]></dc:creator><pubDate>Sat, 02 Apr 2011 13:24:09 GMT</pubDate></item><item><title><![CDATA[Reply to 3-Werte auslesen, speichern und verrechnen on Mon, 04 Apr 2011 21:18:52 GMT]]></title><description><![CDATA[<p>thomas___ schrieb:</p>
<blockquote>
<p>Werner Salomon schrieb:</p>
<blockquote>
<pre><code class="language-cpp">getline( datei &gt;&gt; ws, key, '=' ) &gt;&gt; wert;
</code></pre>
</blockquote>
<p>Sollte das nicht</p>
<pre><code class="language-cpp">getline( datei , key, '=' ) &gt;&gt; ws &gt;&gt; wert;
</code></pre>
<p>heißen?</p>
<p>Vielleicht verstehe ich das auch falsch, aber das Ziel ist doch, daß bei</p>
<pre><code>x=   3
</code></pre>
<p>nicht 0 herauskommt, oder?</p>
</blockquote>
<p>Hallo Thomas,</p>
<p>gut dass Du fragst und traurig, dass Dir noch niemand geantwortet hat.<br />
Man unterscheidet beim Einlesen zwischen dem formatierten und dem unformatierten Lesen. Formatiert lesen heißt alle <a href="http://de.wikipedia.org/wiki/Leerraum" rel="nofollow">White-Space-Zeichen</a> ab der aktuellen Leseposition zu überlesen und erst auf das erste nicht Leerzeichen zu reagieren. Vorausgesetzt dass es nicht explizit mit '<a href="http://www.cplusplus.com/reference/iostream/manipulators/noskipws/" rel="nofollow">noskipws</a>' abgeschaltet wurde.<br />
Alle Streaming-Operatoren lesen formatiert, also auch das &gt;&gt;double, dass heißt, dass führende Leerzeichen nie ein Problem sind.<br />
getline liest unformatiert. Hier werden ab Leseposition alle Zeichen mitgenommen - inklusive Leerzeichen und Zeilenende. Deshalb auch das &gt;&gt;ws vor(!) dem Aufruf von getline.</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2044747</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2044747</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Mon, 04 Apr 2011 21:18:52 GMT</pubDate></item><item><title><![CDATA[Reply to 3-Werte auslesen, speichern und verrechnen on Mon, 04 Apr 2011 21:37:28 GMT]]></title><description><![CDATA[<p>Hier stand Müll</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2044750</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2044750</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Mon, 04 Apr 2011 21:37:28 GMT</pubDate></item><item><title><![CDATA[Reply to 3-Werte auslesen, speichern und verrechnen on Mon, 04 Apr 2011 21:48:08 GMT]]></title><description><![CDATA[<p>inter2k3 schrieb:</p>
<blockquote>
<p>Beim Durchlesen deiner postings hatte ich viele &quot;Aha&quot;s und &quot;Sehr schön gelöst&quot;-Gedanken. Auf viele deiner Lösungen wäre ich nicht gekommen - hätte meist intuitiv eine trivialere und weniger elegantere Lösung programmiert.</p>
</blockquote>
<p>Danke für das Kompliment <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>inter2k3 schrieb:</p>
<blockquote>
<p>Nun stellt sich mir die Frage: Wie hast du dir dein Wissen und deinen Stil angeeignet. In den meisten Büchern werden die Möglichkeiten entweder garnicht so umfangreich erläutert, oder aber es fehlt an Beispielen für elegante und effiziente Umsetzungen. Allein das Wissen über die Existenz bestimmter Funktionen, Klassen etc. reicht nunmal oft nicht aus, diese auch sinnvoll zu nutzen.</p>
</blockquote>
<p>.. das ist wahr! Ich habe mit dem Lernen von C++ angefangen mir auch das Know How über Iostreams anzueignen. Das war so ca. 1996 und dauerte etwa 5 Jahre bis ich einigermaßen auf Stand war. Ganz hört dass ja nie auf.<br />
Ich habe auch erst alle Fehler durchgemacht - meinen eigene ostream geschrieben, der von std::ostream abgeleitet war, um danach zu sehen, dass das ziemlich daneben ist, und anderes mehr. So etwa 1999 habe ich mir dann <a href="http://www.amazon.com/C-Iostreams-Handbook-Steve-Teale/dp/0201596415" rel="nofollow">C++ Iostreams Handbook</a> von Steve Teale besorgt. Das Buch war damals schon veraltet und kurze Zeit später erschien <a href="http://www.amazon.com/Standard-IOStreams-Locales-Programmers-Reference/dp/0321585585" rel="nofollow">Standard C++ IOStreams and Locales</a> von Langer &amp; Kreft. Letzteres ist zwar ein umfassendes Werk, aber für meinen Geschmack stand trotzt erheblichen Umfangs (670 Seiten) immer noch zu wenig drin. Zumindest lässt es sich gut lesen, da es zwar in englisch aber von deutschen Autoren verfasst ist.<br />
Und den C++-Standard selber habe ich mir natürlich auch genau angesehen. Zum Lernen ist der aber völlig ungeeignet.</p>
<p>Sehr viel dazu gelernt habe ich später dann hier im Forum einfach durch die Fragen, die gestellt worden sind. Dann war die Motivation da, mir auch Antworten zu überlegen, die mit dem was im C++-Standard steht, vom Geist/Stil her übereinstimmen.</p>
<p>inter2k3 schrieb:</p>
<blockquote>
<p>Kannst du Literatur zu diesem Thema empfehlen oder von mir aus auch Tutorials?</p>
</blockquote>
<p>(s.o.), aber eigentlich nicht wirklich. Das 'Standard C++ IOStreams and Locales' kann man sich als Nachschlagewerk in die Firmen/Uni-Bibliothek stellen, als privates Lesevergnügen ist es weniger geeignet.<br />
Ansonsten hier im Forum Deine Probleme bzw. Codestücke vorstellen und diskutieren.</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2044753</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2044753</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Mon, 04 Apr 2011 21:48:08 GMT</pubDate></item><item><title><![CDATA[Reply to 3-Werte auslesen, speichern und verrechnen on Tue, 05 Apr 2011 06:41:11 GMT]]></title><description><![CDATA[<p>Werner Salomon schrieb:</p>
<blockquote>
<p>thomas___ schrieb:</p>
<blockquote>
<p>Werner Salomon schrieb:</p>
<blockquote>
<pre><code class="language-cpp">getline( datei &gt;&gt; ws, key, '=' ) &gt;&gt; wert;
</code></pre>
</blockquote>
<p>Sollte das nicht</p>
<pre><code class="language-cpp">getline( datei , key, '=' ) &gt;&gt; ws &gt;&gt; wert;
</code></pre>
<p>heißen?</p>
<p>Vielleicht verstehe ich das auch falsch, aber das Ziel ist doch, daß bei</p>
<pre><code>x=   3
</code></pre>
<p>nicht 0 herauskommt, oder?</p>
</blockquote>
<p>Hallo Thomas,</p>
<p>gut dass Du fragst und traurig, dass Dir noch niemand geantwortet hat.<br />
Man unterscheidet beim Einlesen zwischen dem formatierten und dem unformatierten Lesen. Formatiert lesen heißt alle <a href="http://de.wikipedia.org/wiki/Leerraum" rel="nofollow">White-Space-Zeichen</a> ab der aktuellen Leseposition zu überlesen und erst auf das erste nicht Leerzeichen zu reagieren. Vorausgesetzt dass es nicht explizit mit '<a href="http://www.cplusplus.com/reference/iostream/manipulators/noskipws/" rel="nofollow">noskipws</a>' abgeschaltet wurde.<br />
Alle Streaming-Operatoren lesen formatiert, also auch das &gt;&gt;double, dass heißt, dass führende Leerzeichen nie ein Problem sind.<br />
getline liest unformatiert. Hier werden ab Leseposition alle Zeichen mitgenommen - inklusive Leerzeichen und Zeilenende. Deshalb auch das &gt;&gt;ws vor(!) dem Aufruf von getline.</p>
<p>Gruß<br />
Werner</p>
</blockquote>
<p>Hallo Werner,<br />
vielen Dank für deine Erklärung!</p>
<p>Ich möchte sicherheitshalber nochmals nachfragen:<br />
Der Unterschied zwischen</p>
<pre><code class="language-cpp">getline( datei &gt;&gt; ws , key, '=' ) &gt;&gt; wert;
</code></pre>
<p>und</p>
<pre><code class="language-cpp">getline( datei , key, '=' ) &gt;&gt; wert;
</code></pre>
<p>besteht darin, daß bei letzterem im String key evtl. am Anfang whitespaces stehen. Die Variable wert hat nach der Anweisung in beiden Fällen den gleichen Wert. Richtig?</p>
<p>(Ich hatte den OP zuerst so verstanden, daß die Reihenfolge in der Datei immer gleich ist und man das &quot;W1=&quot; auch &quot;wegwerfen&quot; könnte. Dann hätte auch die zweite Möglichkeit zum Ziel geführt, oder?)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2044787</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2044787</guid><dc:creator><![CDATA[thomas___]]></dc:creator><pubDate>Tue, 05 Apr 2011 06:41:11 GMT</pubDate></item><item><title><![CDATA[Reply to 3-Werte auslesen, speichern und verrechnen on Tue, 05 Apr 2011 20:22:16 GMT]]></title><description><![CDATA[<p>thomas___ schrieb:</p>
<blockquote>
<p>Ich möchte sicherheitshalber nochmals nachfragen:<br />
Der Unterschied zwischen</p>
<pre><code class="language-cpp">getline( datei &gt;&gt; ws , key, '=' ) &gt;&gt; wert;
</code></pre>
<p>und</p>
<pre><code class="language-cpp">getline( datei , key, '=' ) &gt;&gt; wert;
</code></pre>
<p>besteht darin, daß bei letzterem im String key evtl. am Anfang whitespaces stehen. Die Variable wert hat nach der Anweisung in beiden Fällen den gleichen Wert. Richtig?</p>
</blockquote>
<p>ja richtig!</p>
<p>thomas___ schrieb:</p>
<blockquote>
<p>(Ich hatte den OP zuerst so verstanden, daß die Reihenfolge in der Datei immer gleich ist und man das &quot;W1=&quot; auch &quot;wegwerfen&quot; könnte. Dann hätte auch die zweite Möglichkeit zum Ziel geführt, oder?)</p>
</blockquote>
<p>Nein - das datei&gt;&gt;ws vor(!) dem <code>getline</code> ist absolut notwendig, wenn mehr als eine Zeile gelesen werde soll. Nach Lesen des ersten Eintrags ( <code>w1=268</code> ) steht der Lesezeiger auf dem Zeilenende oder sogar auf den evt. vorhandenen Leerzeichen am Zeilenende in der ersten Zeile. Ein <code>getline</code> würde jetzt diese Leerzeichen und das Zeilenende (LF) bis zum '=' mit in den String <code>key</code> ablegen. Genau das gilt es zu vermeiden, indem mit <code>ws</code> diese Leerzeichen übersprungen werden.</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2045183</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2045183</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Tue, 05 Apr 2011 20:22:16 GMT</pubDate></item><item><title><![CDATA[Reply to 3-Werte auslesen, speichern und verrechnen on Tue, 05 Apr 2011 21:51:19 GMT]]></title><description><![CDATA[<p>Wenn der Name des Schlüssels nicht weiter verarbeitet werden muß, ist es doch egal, ob du ihn nun mit oder ohne Leerzeichen einliest (wobei, dann könnte man die getline()-Konstruktion auch durch <a href="http://www.cppreference.com/wiki/io/basic_istream/ignore" rel="nofollow">istream::ignore()</a> ersetzen). Wenn du den Namen weiterverwenden willst, mußt du dich auch noch um Leerzeichen hinter dem Schlüsselnamen kümmern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2045234</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2045234</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 05 Apr 2011 21:51:19 GMT</pubDate></item><item><title><![CDATA[Reply to 3-Werte auslesen, speichern und verrechnen on Wed, 06 Apr 2011 06:57:58 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Wenn der Name des Schlüssels nicht weiter verarbeitet werden muß, ist es doch egal, ob du ihn nun mit oder ohne Leerzeichen einliest (wobei, dann könnte man die getline()-Konstruktion auch durch <a href="http://www.cppreference.com/wiki/io/basic_istream/ignore" rel="nofollow">istream::ignore()</a> ersetzen). Wenn du den Namen weiterverwenden willst, mußt du dich auch noch um Leerzeichen hinter dem Schlüsselnamen kümmern.</p>
</blockquote>
<p>Hallo CStoll,</p>
<p>das ist natürlich richtig. Ich hatte Thomas' zweite Frage völlig missverstanden. Und istream.ignore ist in diesem Fall auch die bessere Wahl und dann wäre auch eindeutig, was das Programm tun soll.</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2045307</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2045307</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Wed, 06 Apr 2011 06:57:58 GMT</pubDate></item></channel></rss>