<?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[aus Textdatei arrays basteln]]></title><description><![CDATA[<p>Hallo liebes Forum,</p>
<p>ich sitze schon seit Ewigkeiten über einem Problem...</p>
<p>ich habe eine Textdatei die folgende Zeilen hat (insgesamt 30 Zeilen) :<br />
1,Max,Mustermann<br />
2,Rolf,Muster<br />
3,Pia,Muster</p>
<p>Nun würde ich daraus gerne 3 Arrays basteln:<br />
id[0]=1 vorname[0]=Max name[0]=Mustermann<br />
id[1]=2 vorname[1]=Rolf name[1]=Muster<br />
id[2]=3 vorname[2]=Pia name[2]=Muster</p>
<p>Meine Idee war es zuerst, mir die Datei mit Hilfe von ifstream und datei.open einzulesen (was auch klappt) und dann zeilenweise abzufragen wo da erste Komma ist, dann weiss ich das davor die ID stehen muss. Im nächsten Schritt dann nach dem nächsten Komma suchen,davor muss dann der vorname stehen usw.</p>
<p>Nur das bekomme ich nicht s hin, bzw. gibt es da eine bessere/schönere Lösung?</p>
<p>Danke schon jetzt für die Hilfe!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/322586/aus-textdatei-arrays-basteln</link><generator>RSS for Node</generator><lastBuildDate>Sat, 04 Apr 2026 11:24:19 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/322586.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 30 Dec 2013 12:03:54 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to aus Textdatei arrays basteln on Mon, 30 Dec 2013 12:03:54 GMT]]></title><description><![CDATA[<p>Hallo liebes Forum,</p>
<p>ich sitze schon seit Ewigkeiten über einem Problem...</p>
<p>ich habe eine Textdatei die folgende Zeilen hat (insgesamt 30 Zeilen) :<br />
1,Max,Mustermann<br />
2,Rolf,Muster<br />
3,Pia,Muster</p>
<p>Nun würde ich daraus gerne 3 Arrays basteln:<br />
id[0]=1 vorname[0]=Max name[0]=Mustermann<br />
id[1]=2 vorname[1]=Rolf name[1]=Muster<br />
id[2]=3 vorname[2]=Pia name[2]=Muster</p>
<p>Meine Idee war es zuerst, mir die Datei mit Hilfe von ifstream und datei.open einzulesen (was auch klappt) und dann zeilenweise abzufragen wo da erste Komma ist, dann weiss ich das davor die ID stehen muss. Im nächsten Schritt dann nach dem nächsten Komma suchen,davor muss dann der vorname stehen usw.</p>
<p>Nur das bekomme ich nicht s hin, bzw. gibt es da eine bessere/schönere Lösung?</p>
<p>Danke schon jetzt für die Hilfe!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374086</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374086</guid><dc:creator><![CDATA[fischldi]]></dc:creator><pubDate>Mon, 30 Dec 2013 12:03:54 GMT</pubDate></item><item><title><![CDATA[Reply to aus Textdatei arrays basteln on Mon, 30 Dec 2013 12:50:09 GMT]]></title><description><![CDATA[<p>Da die Daten doch offensichtlich logisch zusammengehören, sollte man sie auch nicht trennen. Anstatt drei verschiedene Felder zu machen, machst du nur eines und der Datentyp ist dann irgendeine Klasse, welche die drei Attribute (Id, Vorname, Nachname) zusammen verwaltet. Das wird dir auch sehr wahrscheinlich später entgegen kommen, wenn du mit diesen Daten auch was machen willst.</p>
<p>Der Rest ist dann Standard: Eingabeoperator für diese Klasse definieren, der das vorgegebene Format lesen kann. Hier ist das Format mal in Worten ausgedrückt:<br />
Integer; Komma; Zeichenkette; Komma; Zeichenkette; Zeilenumbruch</p>
<p>Integer kann man einfach aus einem Stream lesen mit dem dazu vorgegebenen Operator. Ebenso einzelne Zeichen (hier das Komma), wir sollten nur prüfen, ob es wirklich ein Komma ist, damit wir merken, wenn etwas falsch ist. Dazu habe ich eine kleine Hilfsfunktion geschrieben, da man so etwas doch recht oft braucht (in diesem Programm jedoch nur einmal). Danach zwei Zeichenketten, die jeweils durch ein bestimmtes Trennzeichen beendet werden (einmal Komma, einmal Zeilenumbruch). Dafür bietet sich getline an.<br />
All dies wird von der kleinen Funktion in Zeilen 27-33 zusammen gefasst.</p>
<p>Der Rest des Programms ist ein kleines Beispiel um diese Funktionen gestrickt:</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;vector&gt;
#include &lt;sstream&gt; // Für das Beispiel: Lesen aus String statt aus Datei

// Kleine Funktion, die einen einzelnen Buchstaben liest und prüft, ob es ein bestimmter ist.
template&lt;char which&gt; std::istream&amp; readchar(std::istream&amp; in)
{
  char c;
  in &gt;&gt; c;
  if (in and c != which)
    {
      in.putback(c);
      in.setstate(in.failbit);
    }
  return in;  
}

// Klasse, die die gewünschten Daten hält
class DataEntry
{
  int id;
  std::string first_name;
  std::string last_name;

  // Funktion, um Daten in dem gezeigten Format zu lesen:
  friend std::istream&amp; operator&gt;&gt;(std::istream &amp;in, DataEntry &amp;data)
  {
    in &gt;&gt; data.id &gt;&gt; readchar&lt;','&gt;;
    getline(in, data.first_name, ',');
    getline(in, data.last_name);
    return in;
  }

  // Zum Testen eine Ausgabefunktion:
  friend std::ostream&amp; operator&lt;&lt;(std::ostream &amp;out, const DataEntry &amp;data)
  {
    return out &lt;&lt; &quot;id = &quot; &lt;&lt; data.id &lt;&lt; &quot;\nVorname: &quot; &lt;&lt; data.first_name &lt;&lt; &quot;\nNachname: &quot; &lt;&lt; data.last_name &lt;&lt; '\n';
  }
};

int main()
{
  std::stringstream testdaten(&quot;1,Max,Mustermann\n2,Rolf,Muster\n3,Pia,Muster&quot;);

  // Daten in Feld lesen:
  std::vector&lt;DataEntry&gt; data;
  for(DataEntry entry; testdaten &gt;&gt; entry;)
    data.push_back(entry);

  // Testausgabe:
  for(const DataEntry&amp; entry: data)
    std::cout &lt;&lt; entry &lt;&lt; '\n';
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2374094</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374094</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 30 Dec 2013 12:50:09 GMT</pubDate></item><item><title><![CDATA[Reply to aus Textdatei arrays basteln on Mon, 30 Dec 2013 12:58:00 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<pre><code>template&lt;char which&gt; std::istream&amp; readchar(std::istream&amp; in)
{
  char c;
  in &gt;&gt; c;
  if (in and c != which)
    {
      in.putback(c);
      in.setstate(in.failbit);
</code></pre>
</blockquote>
<p>Weshalb machst du da ein <code>putback</code> SeppJ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374098</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374098</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Mon, 30 Dec 2013 12:58:00 GMT</pubDate></item><item><title><![CDATA[Reply to aus Textdatei arrays basteln on Mon, 30 Dec 2013 13:23:54 GMT]]></title><description><![CDATA[<p>out schrieb:</p>
<blockquote>
<p>Weshalb machst du da ein <code>putback</code> SeppJ?</p>
</blockquote>
<p>Weil ich den Zustand des Streams möglich genau wieder herstellen möchte, nachdem eine Extraktion logisch fehlgeschlagen ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374100</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374100</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 30 Dec 2013 13:23:54 GMT</pubDate></item><item><title><![CDATA[Reply to aus Textdatei arrays basteln on Mon, 30 Dec 2013 13:21:55 GMT]]></title><description><![CDATA[<p>Hall o SeppJ,</p>
<p>Vielen dank,da ich schon sehr lange nichts mehr programmiert habe, gehe ich an die Sachen oft etwas zu umständlich ran. habe Dein Programm gerade ausprobiert, mein Compiler hat folgendes zurückgemeldet: &quot;error: range-based ‘for’ loops are not allowed in C++98 mode&quot;...das beziehet sich auf die Schleife in der main.</p>
<p>Hast Du eien Idee warum er da meckert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374103</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374103</guid><dc:creator><![CDATA[fischldi]]></dc:creator><pubDate>Mon, 30 Dec 2013 13:21:55 GMT</pubDate></item><item><title><![CDATA[Reply to aus Textdatei arrays basteln on Mon, 30 Dec 2013 13:25:30 GMT]]></title><description><![CDATA[<p>Gib mal deinem Compiler -std=c++11 mit, falls du g++ verwendest.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374104</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374104</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Mon, 30 Dec 2013 13:25:30 GMT</pubDate></item><item><title><![CDATA[Reply to aus Textdatei arrays basteln on Mon, 30 Dec 2013 13:28:49 GMT]]></title><description><![CDATA[<p>fischldi schrieb:</p>
<blockquote>
<p>Vielen dank,da ich schon sehr lange nichts mehr programmiert habe, gehe ich an die Sachen oft etwas zu umständlich ran. habe Dein Programm gerade ausprobiert, mein Compiler hat folgendes zurückgemeldet: &quot;error: range-based ‘for’ loops are not allowed in C++98 mode&quot;...das beziehet sich auf die Schleife in der main.</p>
<p>Hast Du eien Idee warum er da meckert?</p>
</blockquote>
<p>Weil es range based 'for' Schleifen in C++98 nicht gibt <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="🙂"
    /> . Das gibt es erst seit C++11. Da dein Compiler das Konstrukt erkennt, kann er offensichtlich C++11. Es bleiben zwei Wege:<br />
-Du setzt du deinen Compiler in den C++11-Modus (das willst du kurz oder lang vermutlich sowieso). Was ist das für ein Compiler? GCC? Bei dem setzt du die Kommandozeilenoption <code>-std=c++11</code> oder bei älteren Versionen (vor 2011) <code>-std=c++0x</code> .<br />
-Du schreibst den Code um. Er gibt alle Elemente in dem vector aus. Solltest du auch ohne range-based for hinbekommen, oder? Ist bloß mehr Schreibarbeit, weshalb ich es nicht so gemacht habe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374105</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374105</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 30 Dec 2013 13:28:49 GMT</pubDate></item><item><title><![CDATA[Reply to aus Textdatei arrays basteln on Tue, 31 Dec 2013 17:34:26 GMT]]></title><description><![CDATA[<p>Hallo SeppJ,</p>
<p>danke, Dein Tipp mit dem g++ Compiler hat geholfen , ich kann es kompilieren <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 was Du mir geschrieben hast, klingt sehr nach dem was ich brauche!! Ich habe ja eine Textdatei in der die ganzen Datensätze liegen. Beim Versuch die Daten aus der Textdatei in das Programm einfliessen zu lassen, kam eine ellenlange Fehlermeldung.</p>
<p>Ich habe es folgendermassen probiert:</p>
<pre><code>int main()
{
string s;

ifstream namendatei; // Namensdatei iegt im verzeichnis
namendatei.open(&quot;namen.txt&quot;,ios_base::in); //oeffne textdatei mit namen

while(!namendatei.eof()) //solange noch daten vorliegen
{
getline(namendatei,s); //liess  eine Zeile ein
cout &lt;&lt; s;

  // Daten in Feld lesen:
  std::vector&lt;DataEntry&gt; data;
  for(DataEntry entry; s &gt;&gt; entry;)
    data.push_back(entry);
} 
  // Testausgabe:
  for(const DataEntry&amp; entry: data)
    std::cout &lt;&lt; entry &lt;&lt; '\n';

return 0;
}
</code></pre>
<p>Hat das etwas mit dem ifstream zu tun? Aber dieses Format brauche ich doch um aus Textdatein zu lesen??</p>
<p>Danke schonmal für eure Hilfe...wenn das geschafft ist bekomme ich den Rest alleine hin <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/2374334</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374334</guid><dc:creator><![CDATA[fischldi]]></dc:creator><pubDate>Tue, 31 Dec 2013 17:34:26 GMT</pubDate></item><item><title><![CDATA[Reply to aus Textdatei arrays basteln on Tue, 31 Dec 2013 18:42:43 GMT]]></title><description><![CDATA[<p>Hi.</p>
<p>-Schau dir mal RAII an. Dann weißt du, warum du kein namendatei.open brauchst.<br />
-Du musst nach einem Einelsevorgang prüfen, ob das Einlesen erfolgreich war. Also zwischen getline(namendatei,s) und cout &lt;&lt; s; fehlt etwas.<br />
-Wenn du DataEntry ausgeben willst, musst du operator&lt;&lt; überladen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374347</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374347</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Tue, 31 Dec 2013 18:42:43 GMT</pubDate></item><item><title><![CDATA[Reply to aus Textdatei arrays basteln on Wed, 01 Jan 2014 12:03:52 GMT]]></title><description><![CDATA[<p>Du versuchst hier operator&gt;&gt; auf einen String und einen DataEntry anzuwenden, was irgendwie total sinnlos ist. Die Fehlermeldung sagt, dass es einen solchen Operator nicht gibt und schlägt dir alle möglichen Alternativen vor (daher ist die Meldung so lang).</p>
<p>Du hättest einfach nur den Stringstream aus dem Beispiel durch deine Datei ersetzen brauchen, dann hätte alles gepasst. Das schöne am IO-Modell von C++ ist doch, dass die ganzen Streamtypen untereinander austauschbar sind. Alles was du jetzt zusätzlich zum Code hinzu gefügt hast macht das Programm kaputt:<br />
-Die Abbruchbedingung <code>while(!eof)</code> ist Schwachsinn. Das ist in keiner C-artigen Sprache richtig. Wo du das her hast, solltest du nicht weiter lesen. Derjenige, der dir das gezeigt hat, hat keine Ahnung.<br />
-Der ganze Punkt den ich machen wollte war doch, dass man die Formatierung zentral in die Lesefunktion packen sollte. Das getline in der main und der anschließende (falsche, s.o.) Versuch auf die Zeile die Lesefunktion anzuwenden ist gerade das, was hier vermieden werden sollte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374404</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374404</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 01 Jan 2014 12:03:52 GMT</pubDate></item><item><title><![CDATA[Reply to aus Textdatei arrays basteln on Wed, 01 Jan 2014 13:50:37 GMT]]></title><description><![CDATA[<p>Mal eine Frage:</p>
<p>Ist das hier</p>
<pre><code>for(const DataEntry&amp; entry: data)
</code></pre>
<p>Equivalent zu</p>
<pre><code>for(auto entry : data)
</code></pre>
<p>oder gibt es da einen Unterschied und wenn ja, welcher?<br />
(Abgesehen vom syntaktischen)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374413</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374413</guid><dc:creator><![CDATA[hardware]]></dc:creator><pubDate>Wed, 01 Jan 2014 13:50:37 GMT</pubDate></item><item><title><![CDATA[Reply to aus Textdatei arrays basteln on Wed, 01 Jan 2014 13:57:23 GMT]]></title><description><![CDATA[<p>Ja, einmal ist das eine konstante Referenz auf DataEntry, ein andermal decltype(*data.begin()), was nicht unbedingt eine konstante Referenz sein muss, sondern eher eine nicht konstante Referenz.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374415</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374415</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Wed, 01 Jan 2014 13:57:23 GMT</pubDate></item><item><title><![CDATA[Reply to aus Textdatei arrays basteln on Wed, 01 Jan 2014 14:16:13 GMT]]></title><description><![CDATA[<p>Das heißt es ist garnicht so toll auto dort zu verwenden, ich meine, ist das überhaupt definiert ob const oder nicht? Und sollte man einfach &quot;manuell&quot; const schreiben, wenn man sicher sein will, dass man da nix verändert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374418</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374418</guid><dc:creator><![CDATA[hardware]]></dc:creator><pubDate>Wed, 01 Jan 2014 14:16:13 GMT</pubDate></item><item><title><![CDATA[Reply to aus Textdatei arrays basteln on Wed, 01 Jan 2014 16:45:02 GMT]]></title><description><![CDATA[<p>Nathan schrieb:</p>
<blockquote>
<p>konstante Referenz</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /> ALARM ALARM</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374445</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374445</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Wed, 01 Jan 2014 16:45:02 GMT</pubDate></item><item><title><![CDATA[Reply to aus Textdatei arrays basteln on Wed, 01 Jan 2014 16:49:16 GMT]]></title><description><![CDATA[<p>hardware schrieb:</p>
<blockquote>
<p>Das heißt es ist garnicht so toll auto dort zu verwenden, ich meine, ist das überhaupt definiert ob const oder nicht? Und sollte man einfach &quot;manuell&quot; const schreiben, wenn man sicher sein will, dass man da nix verändert?</p>
</blockquote>
<p>auto ist dazu da, dass du das Denken dem Compiler überlassen kannst. Es ist immer sinnvoll, das Denken jemanden zu überlassen, der es zu 100% weiß. auto steht dann für den richtigen Datentypen. const hat mit auto nichts zu tun. const ist kein Datentyp.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374447</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374447</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Wed, 01 Jan 2014 16:49:16 GMT</pubDate></item><item><title><![CDATA[Reply to aus Textdatei arrays basteln on Wed, 01 Jan 2014 16:57:30 GMT]]></title><description><![CDATA[<p>out schrieb:</p>
<blockquote>
<p>Nathan schrieb:</p>
<blockquote>
<p>konstante Referenz</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /> ALARM ALARM</p>
</blockquote>
<p>Ja, ja.<br />
Referenz auf const.<br />
<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="🙄"
    /> <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/2374449</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374449</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Wed, 01 Jan 2014 16:57:30 GMT</pubDate></item><item><title><![CDATA[Reply to aus Textdatei arrays basteln on Fri, 03 Jan 2014 15:38:03 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>danke für Eure Beiträge!</p>
<p>Das meine while-Schleife mit der != eof() nicht schön ist, verstehe ich. Habe dafür aber gerade noch keine Alternative gefunden, denn ich muss meine Textdatei ja zeilenweise einlesen und brauche dafür eine Schleife?</p>
<p>Ich habe versucht , die Datei in einen String einzulesen und diesen String dann in einen stringstream umzuwandeln, Fehlermeldung bekomme ich keine ,aber auch keine Ausgabe...</p>
<p>Ich glaube das der letzte Schritt einfach ist, aber ich finde das ganze Thema schwierig und stehe da gerade auf dem Schlauch...</p>
<pre><code>int main()
{
string s;
ifstream namendatei; // liegt im verzeichnis
namendatei.open(&quot;namen.txt&quot;,ios_base::in); //oeffne textdatei mit namen

stringstream ss(s);

vector&lt;DataEntry&gt; data; //Vektor data der Klasse DataEntry angelegt

while(!namendatei.eof()) //solange noch daten vorliegen
{
getline(namendatei,s); //liess  eine zeile ein

//stringstream ss(&quot;1,Max,Mustermann\n2,Rolf,Muster\n3,Pia,Muster&quot;);
  for(DataEntry entry; ss &gt;&gt; entry;)
    data.push_back(entry);

} 
  // Testausgabe:
  for(const DataEntry&amp; entry: data)
    std::cout &lt;&lt; entry &lt;&lt; '\n';

    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2374879</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374879</guid><dc:creator><![CDATA[fischldi]]></dc:creator><pubDate>Fri, 03 Jan 2014 15:38:03 GMT</pubDate></item><item><title><![CDATA[Reply to aus Textdatei arrays basteln on Fri, 03 Jan 2014 15:48:43 GMT]]></title><description><![CDATA[<pre><code>int main()
{
    ifstream namendatei(&quot;namen.txt&quot;);
    vector&lt;DataEntry&gt; data;
    for(string s; getline(namendatei,s); )
    {
        stringstream ss(s);
        for(DataEntry entry; ss &gt;&gt; entry; )
            data.push_back(entry);
    } 
    for(const DataEntry&amp; entry: data)
        std::cout &lt;&lt; entry &lt;&lt; '\n';

    return 0;
}
</code></pre>
<p>sollte funktionieren</p>
<p>LG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374881</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374881</guid><dc:creator><![CDATA[hardware]]></dc:creator><pubDate>Fri, 03 Jan 2014 15:48:43 GMT</pubDate></item><item><title><![CDATA[Reply to aus Textdatei arrays basteln on Fri, 03 Jan 2014 15:51:02 GMT]]></title><description><![CDATA[<p>fischldi schrieb:</p>
<blockquote>
<p>Das meine while-Schleife mit der != eof() nicht schön ist, verstehe ich. Habe dafür aber gerade noch keine Alternative gefunden, denn ich muss meine Textdatei ja zeilenweise einlesen und brauche dafür eine Schleife?</p>
</blockquote>
<p>Nicht unschön, sondern schlichtweg falsch. Wenn das in deinem Lehrbuch so stand (kommt leider vor), dann schmeiß es weg. Wenn du einen Fehler beim Lesen hast, dann verarbeitest du hier Mülldaten, erst dann folgt deine Prüfung ob das Lesen erfolgreich war. Und nicht einmal das, denn du prüfst nur auf Dateiende, bei anderen Fehlern hättest du eine feine Endlosschleife der Müllverarbeitung.</p>
<p>Lesen läuft in C++ (und anderen C-artigen Sprachen) immer so ab:<br />
-einlesen<br />
-prüfen<br />
-verarbeiten</p>
<p>Einen Stream kann man ganz einfach auf einen Fehlerzustand prüfen (und zwar alle möglichen Fehler, nicht nur eof!), indem man ihn in einem boolschen Kontext auswertet:</p>
<pre><code>int i;
cin &gt;&gt; i;
if (cin) ... // erfolgreich?
</code></pre>
<p>Schönerweise geben fast alle Leseaktionen in C++ den Stream selbst zurück, so dass man die Leseaktion und die Prüfung schick zusammen fassen kann:</p>
<pre><code>int i;
if (cin &gt;&gt; i) ... // erfolgreich?
</code></pre>
<p>So etwas kann man dann naheliegenderweise auch als Abbruchbedingung für Schleifen benutzen. Oft gesehene Konstrukte:</p>
<pre><code>int i;
while (cin &gt;&gt; i)
{
  // i verarbeiten
}

// oder

for(int i; cin &gt;&gt; i; )
{
  // i verarbeiten
}
</code></pre>
<p>Dies ist ebenfalls etwas, das in einem Lehrbuch erklärt gehört, wenn das nicht drin steht, dann hat das irgendjemand geschrieben, der vor 30 Jahren Mal Pascal gelernt hat (da geht das tatsächlich so wie du es versuchst) und denkt, C++ wäre wenn er <code>BEGIN</code> und <code>END</code> durch <code>{</code> und <code>}</code> ersetzt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374883</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374883</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 03 Jan 2014 15:51:02 GMT</pubDate></item><item><title><![CDATA[Reply to aus Textdatei arrays basteln on Fri, 03 Jan 2014 15:52:36 GMT]]></title><description><![CDATA[<p>SeppJ hat die perfekte Lösung bereits gepostet. Wieso nimmst du diese nicht und versuchst alles nachzuvollziehen? Dann hast was gutes gelernt. Wenn was an seinem Code nicht verstehst kann man auf jene Zeile ja eingehen hier.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374886</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374886</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Fri, 03 Jan 2014 15:52:36 GMT</pubDate></item><item><title><![CDATA[Reply to aus Textdatei arrays basteln on Fri, 03 Jan 2014 15:58:14 GMT]]></title><description><![CDATA[<p>wie cool ist das denn..danke!!</p>
<p>Das mit der falschen Abbruchbedingung habe ich tatsächlich aus einem etwas älteren Lehrbuch...gut..daraus werde ich in Zukunft wohl nichts mehr übernehmen.</p>
<p>Vielen dank!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374890</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374890</guid><dc:creator><![CDATA[fischldi]]></dc:creator><pubDate>Fri, 03 Jan 2014 15:58:14 GMT</pubDate></item><item><title><![CDATA[Reply to aus Textdatei arrays basteln on Fri, 03 Jan 2014 16:04:09 GMT]]></title><description><![CDATA[<p>out schrieb:</p>
<blockquote>
<p>SeppJ hat die perfekte Lösung bereits gepostet. Wieso nimmst du diese nicht und versuchst alles nachzuvollziehen? Dann hast was gutes gelernt. Wenn was an seinem Code nicht verstehst kann man auf jene Zeile ja eingehen hier.</p>
</blockquote>
<p>Oh, der Thread ist das. Hatte ich doch recht in Erinnerung, dass ich so eine Frage vor einer Weile schon einmal beantwortet habe <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>Dann weise ich nochmal auf den Beitrag hin:<br />
<a href="http://www.c-plusplus.net/forum/p2374094#2374094" rel="nofollow">http://www.c-plusplus.net/forum/p2374094#2374094</a></p>
<p>Da drin ist alles was du brauchst mit Erklärung. Sogar mit Beispiel. Du musst nur den stringstream durch deinen Dateistream tauschen und schon hast du sogar deine Ausgangsfrage beantwortet und musst dafür nur 1-2 Zeilen ändern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374894</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374894</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 03 Jan 2014 16:04:09 GMT</pubDate></item><item><title><![CDATA[Reply to aus Textdatei arrays basteln on Thu, 09 Jan 2014 17:15:29 GMT]]></title><description><![CDATA[<p>Guten Abend,</p>
<p>Ich bräuchte noch einmal eure Hilfe...ich würde gerne mit Hilfe des Vektors (wie man es mit arrays macht hätte ich gewusst) einen SQLite Befehl &quot;füllen&quot;...</p>
<p>rc = sqlite3_open(&quot;test.db&quot;, &amp;db);<br />
rc=sqlite3_exec(db,&quot;insert into person (personID,name,vorname) values ( ?????? );&quot;,callback,0,&amp;zErrMsg);</p>
<p>Ich habe es folgendermassen probiert:</p>
<pre><code>int main()
{
    ifstream namendatei(&quot;namen.txt&quot;);
    vector&lt;DataEntry&gt; data;
    for(string s; getline(namendatei,s); )
    {
        stringstream ss(s);
        for(DataEntry entry; ss &gt;&gt; entry; )
        rc=sqlite3_exec(db,&quot;insert into person (personID,name,vorname) values (data.id,data.last_name,dta.first_name );&quot;,callback,0,&amp;zErrMsg); 
            data.push_back(entry);

    }
    for(const DataEntry&amp; entry: data)
   cout &lt;&lt; entry &lt;&lt; '\n';

    return 0;
}
</code></pre>
<p>Damit soll dann eine Tabelle in meiner Datenbank gefüllt werden...ich komm da einfach nicht weiter.... <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="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2376248</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2376248</guid><dc:creator><![CDATA[fischldi]]></dc:creator><pubDate>Thu, 09 Jan 2014 17:15:29 GMT</pubDate></item><item><title><![CDATA[Reply to aus Textdatei arrays basteln on Thu, 09 Jan 2014 17:19:16 GMT]]></title><description><![CDATA[<p>Und wieso genau verwendest du da jetzt einen stringstream? <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2376249</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2376249</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Thu, 09 Jan 2014 17:19:16 GMT</pubDate></item><item><title><![CDATA[Reply to aus Textdatei arrays basteln on Thu, 09 Jan 2014 17:22:05 GMT]]></title><description><![CDATA[<p>Das ist eine gute Frage...weil ich es nicht besser gewusst habe.... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2376251</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2376251</guid><dc:creator><![CDATA[fischldi]]></dc:creator><pubDate>Thu, 09 Jan 2014 17:22:05 GMT</pubDate></item><item><title><![CDATA[Reply to aus Textdatei arrays basteln on Thu, 09 Jan 2014 17:40:33 GMT]]></title><description><![CDATA[<p>Meine Textdatei hat schon genau die Form die ich für die Tabelle brauchen kann..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2376253</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2376253</guid><dc:creator><![CDATA[fischldi]]></dc:creator><pubDate>Thu, 09 Jan 2014 17:40:33 GMT</pubDate></item></channel></rss>