<?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[Daten aus txt lesen und speichern]]></title><description><![CDATA[<p>Hallo,<br />
ich lerne derzeit c++ in der schule und brauch Hilfe bei einer Funktionalität.<br />
Es geht um Orte und die dazugehörenden Postleitzahlen..<br />
Ich will diese in einer struktur speichern die Struktur hat ein int für die plz<br />
und ein char für den Ort<br />
Das textdokument ist folgendermaßen aufgebaut:</p>
<p>01067 Dresden<br />
01705 Freital<br />
01877 Schmölln-Putzkau<br />
01983 Großräschen<br />
02748 Bernstadt auf dem Eigen<br />
02959 Groß Düben<br />
...</p>
<p>wie kann ich diese Daten aus dem Textdokument lesen und in Arrays der Struktur speichern?<br />
Danke schon mal im Voraus</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/287892/daten-aus-txt-lesen-und-speichern</link><generator>RSS for Node</generator><lastBuildDate>Thu, 20 Aug 2026 06:02:16 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/287892.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 06 Jun 2011 16:01:17 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Daten aus txt lesen und speichern on Mon, 06 Jun 2011 16:01:17 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich lerne derzeit c++ in der schule und brauch Hilfe bei einer Funktionalität.<br />
Es geht um Orte und die dazugehörenden Postleitzahlen..<br />
Ich will diese in einer struktur speichern die Struktur hat ein int für die plz<br />
und ein char für den Ort<br />
Das textdokument ist folgendermaßen aufgebaut:</p>
<p>01067 Dresden<br />
01705 Freital<br />
01877 Schmölln-Putzkau<br />
01983 Großräschen<br />
02748 Bernstadt auf dem Eigen<br />
02959 Groß Düben<br />
...</p>
<p>wie kann ich diese Daten aus dem Textdokument lesen und in Arrays der Struktur speichern?<br />
Danke schon mal im Voraus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2074100</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2074100</guid><dc:creator><![CDATA[noobmaxxe]]></dc:creator><pubDate>Mon, 06 Jun 2011 16:01:17 GMT</pubDate></item><item><title><![CDATA[Reply to Daten aus txt lesen und speichern on Mon, 06 Jun 2011 16:11:21 GMT]]></title><description><![CDATA[<p>Schau dir mal die IO-Streams und den Eingabe-Operator &gt;&gt; an, damit kannst du so ziemlich alles einlesen, was sich irgendwie interpretieren lässt (und was die Standard-Bibliothek nicht kennt, kannst du dem Compiler auch selber beibringen).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2074109</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2074109</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 06 Jun 2011 16:11:21 GMT</pubDate></item><item><title><![CDATA[Reply to Daten aus txt lesen und speichern on Mon, 06 Jun 2011 16:13:27 GMT]]></title><description><![CDATA[<p><a href="http://ideone.com/c5NSY" rel="nofollow">http://ideone.com/c5NSY</a> ungetestet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2074114</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2074114</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Mon, 06 Jun 2011 16:13:27 GMT</pubDate></item><item><title><![CDATA[Reply to Daten aus txt lesen und speichern on Mon, 06 Jun 2011 18:00:44 GMT]]></title><description><![CDATA[<p>sieht kompliziert aus ....was sind vectoren?^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2074196</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2074196</guid><dc:creator><![CDATA[maxji]]></dc:creator><pubDate>Mon, 06 Jun 2011 18:00:44 GMT</pubDate></item><item><title><![CDATA[Reply to Daten aus txt lesen und speichern on Mon, 06 Jun 2011 18:11:56 GMT]]></title><description><![CDATA[<p>Die C++ Variante eines Arrays. Siehe auch: <a href="http://www.cplusplus.com/reference/stl/vector/" rel="nofollow">http://www.cplusplus.com/reference/stl/vector/</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2074211</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2074211</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Mon, 06 Jun 2011 18:11:56 GMT</pubDate></item><item><title><![CDATA[Reply to Daten aus txt lesen und speichern on Mon, 06 Jun 2011 18:20:52 GMT]]></title><description><![CDATA[<p>Hier gibts auch eine entsprechende Artikelserie: <a href="http://magazin.c-plusplus.net/artikel/Aufbau%20der%20STL%20-%20Teil%201%3A%20Container" rel="nofollow">Aufbau der STL</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2074215</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2074215</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 06 Jun 2011 18:20:52 GMT</pubDate></item><item><title><![CDATA[Reply to Daten aus txt lesen und speichern on Mon, 06 Jun 2011 19:58:19 GMT]]></title><description><![CDATA[<p>noobmaxxe <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="😃"
    /><br />
da hast du dir ja schöne Städtenamen aus gesucht <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 />
So schön mit Leerzeichen und nicht nur Buchstaben (-).</p>
<p>Das ist schon oft ein Problem bei den Beispielquelltexten. Also genau das richtige zu Testen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2074281</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2074281</guid><dc:creator><![CDATA[f.-th.]]></dc:creator><pubDate>Mon, 06 Jun 2011 19:58:19 GMT</pubDate></item><item><title><![CDATA[Reply to Daten aus txt lesen und speichern on Mon, 06 Jun 2011 20:16:26 GMT]]></title><description><![CDATA[<p>Nachtrag: Lese die PLZ auch als String, sonst musst du dir Gedanken über der 0 bei<br />
01967 Dresden machen und brauchst dir auch keinen Kopf machen wie gross int auf deinem System ist, wenn du die PLZ von Nürnberg eingeben willst.</p>
<p>MfG f.-th.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2074287</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2074287</guid><dc:creator><![CDATA[f.-th.]]></dc:creator><pubDate>Mon, 06 Jun 2011 20:16:26 GMT</pubDate></item><item><title><![CDATA[Reply to Daten aus txt lesen und speichern on Mon, 06 Jun 2011 21:20:05 GMT]]></title><description><![CDATA[<p>ja ok .....danke für eure Hilfe, aber bishin bin ich total am scheitern....</p>
<p>ich hab keine ahnung wie ich die sache lesen kann ....<br />
bishin sieht das so aus :</p>
<p>int main(){</p>
<p>ifstream text(&quot;plz4.txt&quot;); // txt mit den daten<br />
std::string puff;<br />
while(!text.eof())<br />
{<br />
getline(text,puff);<br />
cout &lt;&lt; puff &lt;&lt; endl;<br />
}<br />
text.close();<br />
system(&quot;pause&quot;);<br />
}</p>
<p>dann hab ich noch ne struktur<br />
struct City<br />
{<br />
int plz[5];<br />
char ort[30];<br />
};</p>
<p>in der main wird jetz alles zeilenweise ausgegeben<br />
bis zum ende....</p>
<p>habe schon mal so eine einlesefunktion geschrieben, aber bei der war in der text nur eine sache pro zeile.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2074300</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2074300</guid><dc:creator><![CDATA[noobmaxxe]]></dc:creator><pubDate>Mon, 06 Jun 2011 21:20:05 GMT</pubDate></item><item><title><![CDATA[Reply to Daten aus txt lesen und speichern on Mon, 06 Jun 2011 21:22:56 GMT]]></title><description><![CDATA[<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2074301</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2074301</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Mon, 06 Jun 2011 21:22:56 GMT</pubDate></item><item><title><![CDATA[Reply to Daten aus txt lesen und speichern on Mon, 06 Jun 2011 22:32:04 GMT]]></title><description><![CDATA[<p>Hast du überhaupt irgendeinen der Links hier im Thread überhaupt nur angesehen?</p>
<p>Warum benutzt du an einer Stelle string und an anderer Stelle char-Arrays? Das hast du doch nicht selber so geschrieben, das ist Copy&amp;Paste Programmierung. So wird das garantiert nichts.</p>
<p>edit: So könnte so etwas aussehen, wenn man es etwas besser macht. Es ist mit Absicht so geschrieben, dass dir niemand glaubt, dass du das als Hausaufgabe gemacht hast, aber ich versuche möglichst viele Techniken zu benutzen, die dir was bringen, wenn du sie anguckst:</p>
<pre><code class="language-cpp">#include &lt;string&gt;  // Kern des Programms
#include &lt;fstream&gt; //       &quot;
#include &lt;vector&gt;  //       &quot;

#include &lt;algorithm&gt;  // Für die Ausgabe, siehe unten
#include &lt;iterator&gt;   //       &quot;
#include &lt;iostream&gt;   //       &quot;

using namespace std;

class City
{
  string name;   // Wozu Größenbeschränkung durch char[30]?
  string zip;    // Wozu Beschränkung auf 5 Ziffern? Denk international!

  friend istream&amp; operator &gt;&gt; (istream &amp;in, City&amp; city)  // So sieht eine Einlesefunktion aus. Google &quot;Operatorüberladung&quot;
  {
    return getline(in &gt;&gt; city.zip, city.name);  // Ok, dies ist Erfahrungssache, aber du siehst, deine Daten kann man auch als schicken Einzeiler einlesen
  }

  friend ostream&amp; operator &lt;&lt; (ostream &amp;out, City const &amp;city)  // Und das gleiche für die Ausgabe
  {
    return out &lt;&lt; &quot;Postleitzahl: &quot; &lt;&lt; city.zip &lt;&lt; &quot;\tName: &quot; &lt;&lt; city.name;
  }
};

int main()
{
  vector&lt;City&gt; cities;

  {
    ifstream input(&quot;plz4.txt&quot;);
    City new_city;

    // Und so liest man sauber bis zum Ende, ohne das man das Ende doppelt hat:
     while(input &gt;&gt; new_city)
      cities.push_back(new_city);
  }  // An dieser Stelle wird input übrigens automatisch geschlossen, ganz ohne close()

  // Und der Form halber noch eine Ausgabe, die wir mal ein bisschen kürzer schreiben als sonst (das hier musst du nicht verstehen, aber es zeigt, dass die C++-Welt größer ist als du denkst):
  ostream_iterator&lt;City&gt; out_it (cout,&quot;\n&quot;);
  copy(cities.begin(), cities.end(), out_it); 
}
</code></pre>
<p>Wichtige Sachen die hier benutzt werden:</p>
<ul>
<li>
<p>Operatorüberladung kannst du auch hier gut nachlesen: <a href="http://www.c-plusplus.net/forum/232010" rel="nofollow">http://www.c-plusplus.net/forum/232010</a></p>
</li>
<li>
<p>Die ganzen Einlese- und Auslesefunktionen geben immer wieder den Stream selbst zurück und sind dadurch ganz wunderbar schachtelbar (Zeilen 18, 23)</p>
</li>
<li>
<p>Die Standardbibliothek von C++ bietet oftmals sehr viel bessere Alternativen zu den C-Datenstrukturen (vector, string)</p>
</li>
<li>
<p>Die Zeile 37 verdient eine Extra-Auflistung, weil du in deinem Programm einen Fehler machst, den ganz viele Anfänger machen:</p>
</li>
<li>
<p>eof wird gesetzt, <strong>nachdem</strong> eine Leseaktion über das Dateiende hinaus stattgefunden hat. Wenn du erst auf eof prüfst, dann liest und dann das Gelesene abspeicherst, dann stimmt die Reihenfolge nicht. Wenn das Lesen am Dateiende fehlschlägt, speicherst du nämlich trotzdem irgendetwas ab. Die richtige Reihenfolge ist daher Lesen-Prüfen-Speichern.</p>
</li>
<li>
<p>Wenn die Streams zu einem logischen Ausdruck ausgewertet werden (wie in einer if-Abfrage oder hier in der while-Bedingung), dann geben sie true, wenn alles in Ordnung ist und false, wenn ein Fehlerflag gesetzt ist, wie z.B. eof.</p>
</li>
<li>
<p>Wie oben gesagt, geben Einleseaktionen wie &gt;&gt; den Stream selbst zurück, siehe auch die Definition dieser Funktion in Zeile 16.</p>
</li>
<li>
<p>Die Zeile 37 vereint alle diese Punkte sehr kompakt.</p>
</li>
<li>
<p>Eckige Klammern um die Einleseaktion: Wenn Objekte ihren Gültigkeitsbereich (googlen!) verlassen, dann endet auch ihr Leben und der Destruktor (evtl. Nachschlagen. Kurz: Eine Funktion die das Objekt zerstört) wird aufgerufen. new_city und input existieren nach der schließenden Klammer nicht mehr. Die Klassen der Standardbibliothek räumen hinter sich sauber auf (über ihren Konstruktor) und geben alle ihre Ressourcen automatisch frei. Diese Programmiertechnik ist eng verwandt mit dem was man RAII (unbedingt googlen!) nennt und das solltest du dir selber auch angewöhnen. Meistens braucht man aber gar nichts zu tun (wie hier bei der Klasse City), wenn man selber wiederum nur Basisdatentypen oder Datentypen aus der Standardbibliothek benutzt.</p>
</li>
<li>
<p>Ausgabe am Ende: Viele langweilige Standardaufgaben sind in der Standardbibliothek schon lange gelöst, ein Blick hinein lohnt sich. Das wichtigste sind sicherlich die Containerklassen, aber Wie du siehst, kann man mit ein bisschen Wissen etwas wie eine &quot;Schleife über alle Datenelemente nach cout Ausgeben und zwischen allen Einträgen eine neue Zeile machen&quot; sehr kompakt ausdrücken.</p>
</li>
</ul>
<p>edit2: Ich glaube dieser Beitrag ist fast FAQ-fähig als allgemeine Antwort auf alle Anfängerfragen <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/2074306</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2074306</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 06 Jun 2011 22:32:04 GMT</pubDate></item><item><title><![CDATA[Reply to Daten aus txt lesen und speichern on Tue, 07 Jun 2011 07:04:26 GMT]]></title><description><![CDATA[<p>Für die Lösungswegaufzeiger <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 />
Wenn ihr euch noch an eure Zeit als C++ Anfänger erinnert, hättet ihr mit so einem Beispiel weiterarbeiten können? Das als Ziel wie man das Problem relativ elegant in C++ löst, ist gut dargestellt.</p>
<p>Wahrscheinlich sind die Schüler und eventuell auch der Lehrer mit einer solch eleganten und kurzen Lösung überfordert.</p>
<p><strong>Für die Sucher nach Lösungen:</strong><br />
Aber selbst als Anfänger seht euch die Lösung an <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /> Die Kommentare geben euch wichtige Hinweise, ganz egal auf welchem Level ihr eine Lösung angehen wollt.</p>
<p>C++ bietet viele Lösungswege einer solchen Aufgabe. Wenn ihr euch für einen Weg entscheidet, versucht den möglichst konsequent zu gehen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /> Die wilde Mischung von Lösungswegen bereitet euch meist Ärger. Leider sind viele Beiträge im Netz letzteres.</p>
<p>MfG f.-th.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2074385</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2074385</guid><dc:creator><![CDATA[f.-th.]]></dc:creator><pubDate>Tue, 07 Jun 2011 07:04:26 GMT</pubDate></item></channel></rss>