<?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[Textdatei auslesen]]></title><description><![CDATA[<p>Hallo liebe Community, ich bin Anfänger und habe eine bestimmte Frage.<br />
Habe bei Google auch nichts finden können.</p>
<p>Es geht darum, dass ich eine Namensliste erstellen lasse,<br />
welche bis jetzt noch über manuelle Eingabe via. der cin funktion<br />
funktioniert.</p>
<p>Ich möchte jedoch zusätzlich, dass er bei jedem Eintrag in die Textdatei<br />
überprüft, ob der Name in der Liste schon vorhanden ist, das ist alles.</p>
<p>Hier nochmal der Code wie er bis jetzt aussieht:</p>
<pre><code class="language-cpp">int schleife = 1;    
while(schleife = 1)
{
  string wlnewvar;  

  cout &lt;&lt; &quot;Geben sie den Namen des neuen Members ein: &quot; &lt;&lt; endl;
  cin &gt;&gt; wlnewvar;
  cin.get();

  ofstream outfile;
  outfile.open(&quot;wl.txt&quot;, ios::in | ios::out | ios::ate);
  outfile &lt;&lt; wlnewvar &lt;&lt; endl;
  outfile.close();

  cout &lt;&lt; &quot;Neuer Member wurde auf die List gesetzt.&quot; &lt;&lt; endl;
  cout &lt;&lt; &quot;Enter Druecken&quot; &lt;&lt; endl;
  cout &lt;&lt; endl;
  cin.get();
</code></pre>
<p>Würde mich über Hilfe freuen. <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/topic/292345/textdatei-auslesen</link><generator>RSS for Node</generator><lastBuildDate>Mon, 17 Aug 2026 01:09:18 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/292345.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 07 Sep 2011 19:43:20 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Textdatei auslesen on Wed, 07 Sep 2011 19:48:54 GMT]]></title><description><![CDATA[<p>Hallo liebe Community, ich bin Anfänger und habe eine bestimmte Frage.<br />
Habe bei Google auch nichts finden können.</p>
<p>Es geht darum, dass ich eine Namensliste erstellen lasse,<br />
welche bis jetzt noch über manuelle Eingabe via. der cin funktion<br />
funktioniert.</p>
<p>Ich möchte jedoch zusätzlich, dass er bei jedem Eintrag in die Textdatei<br />
überprüft, ob der Name in der Liste schon vorhanden ist, das ist alles.</p>
<p>Hier nochmal der Code wie er bis jetzt aussieht:</p>
<pre><code class="language-cpp">int schleife = 1;    
while(schleife = 1)
{
  string wlnewvar;  

  cout &lt;&lt; &quot;Geben sie den Namen des neuen Members ein: &quot; &lt;&lt; endl;
  cin &gt;&gt; wlnewvar;
  cin.get();

  ofstream outfile;
  outfile.open(&quot;wl.txt&quot;, ios::in | ios::out | ios::ate);
  outfile &lt;&lt; wlnewvar &lt;&lt; endl;
  outfile.close();

  cout &lt;&lt; &quot;Neuer Member wurde auf die List gesetzt.&quot; &lt;&lt; endl;
  cout &lt;&lt; &quot;Enter Druecken&quot; &lt;&lt; endl;
  cout &lt;&lt; endl;
  cin.get();
</code></pre>
<p>Würde mich über Hilfe freuen. <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/2116356</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2116356</guid><dc:creator><![CDATA[Rick-K]]></dc:creator><pubDate>Wed, 07 Sep 2011 19:48:54 GMT</pubDate></item><item><title><![CDATA[Reply to Textdatei auslesen on Wed, 07 Sep 2011 20:22:43 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include&lt;fstream&gt;
#include&lt;iostream&gt;
#include&lt;string&gt;
#include&lt;set&gt;

using namespace std;

int main()
{
  // Erst einmal alle Namen einlesen, dann braucht man 
  // nicht jedes mal die ganze Datei durchgehen, sondern
  // kann effizient Suchen:

  multiset&lt;string&gt; vorhandene_namen;
  {
    ifstream namen_datei(&quot;wl.txt&quot;);
    string gelesener_name;
    while (getline(namen_datei, gelesener_name)) 
      vorhandene_namen.insert(gelesener_name);
  }

  // Unsere Ausgabedatei öffnen wir besser nur einmal, anstatt bei
  // jeder Eingabe, das ist wesentlich schneller:
  ofstream namen_datei(&quot;wl.txt&quot;, ios::app);

  // Jetzt können wir unsere Hauptschleife machen. Sie läuft bis
  // zum Ende der Eingabe (in Windowskonsolen CTRL+Z, in Linux-
  // Konsolen CTRL+D)
  string gelesener_name;
  while (cout &lt;&lt; &quot;Geben sie den Namen des neuen Members ein: &quot;, 
         getline(cin, gelesener_name))
    {
      cout &lt;&lt; gelesener_name &lt;&lt; &quot; war bisher &quot; 
           &lt;&lt; vorhandene_namen.count(gelesener_name)
           &lt;&lt; &quot; Mal in der Datei vorhanden.\n&quot;;
      vorhandene_namen.insert(gelesener_name);
      namen_datei &lt;&lt; gelesener_name &lt;&lt; '\n';
    }
} 

// Und fertig. Beachte auch, wie gut sich so ein Programm liest,
// wenn die Variablen nicht Namen wie &quot;wlnewvar&quot; haben.
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2116378</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2116378</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 07 Sep 2011 20:22:43 GMT</pubDate></item><item><title><![CDATA[Reply to Textdatei auslesen on Wed, 07 Sep 2011 22:38:22 GMT]]></title><description><![CDATA[<p>Ich hab's nicht probiert, aber würde es nicht ausreichen, am Ende einfach</p>
<pre><code class="language-cpp">[...]
  while (cout &lt;&lt; &quot;Geben sie den Namen des neuen Members ein: &quot;,
         getline(cin, gelesener_name))
    {
      cout &lt;&lt; gelesener_name &lt;&lt; &quot; war bisher &quot;
           &lt;&lt; vorhandene_namen.count(gelesener_name)
           &lt;&lt; &quot; Mal in der Datei vorhanden.\n&quot;;
      vorhandene_namen.insert(gelesener_name);
    }
    namen_datei &lt;&lt; vorhandene_namen &lt;&lt; '\n';
}
</code></pre>
<p>den ganzen Datensatz in die Datei zu schreiben anstatt bei jeder Eingabe darauf zuzugreifen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2116421</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2116421</guid><dc:creator><![CDATA[*Rewind*]]></dc:creator><pubDate>Wed, 07 Sep 2011 22:38:22 GMT</pubDate></item><item><title><![CDATA[Reply to Textdatei auslesen on Thu, 08 Sep 2011 07:47:07 GMT]]></title><description><![CDATA[<p>Das ginge auch, aber ich weiß nicht was die genauen Anforderungen sind und so war es im Original. Und es würde die Reihenfolge verändern, wenn nicht zusätzliche Maßnahmen ergriffen werden.<br />
Denk auch dran, dass das Schreiben in die Datei praktisch kostenlos ist, solange man sie nicht zwischendurch immer wieder schließt und öffnet.</p>
<p>edit: Außerdem geht die Ausgabe eines Sets nicht einfach mit Operator &lt;&lt;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2116479</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2116479</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 08 Sep 2011 07:47:07 GMT</pubDate></item><item><title><![CDATA[Reply to Textdatei auslesen on Thu, 08 Sep 2011 15:27:44 GMT]]></title><description><![CDATA[<p>Ersteinmal SeppJ vielen Dank für die Antwort. <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>Da ich leider wie gesagt noch ein absouluter Anfänger bin,<br />
war es etwas schwer deine Lösung zu verstehen, habe keine<br />
bis wenig Erfahrung mit den von dir verwendeten Befehlen.</p>
<p>Was ich leider vergessen hatte zu erwähnen war, dass wenn<br />
der Name in der Liste schon existiert, er NICHT nocheinmal<br />
hineingeschrieben werden soll.</p>
<p>Hast du dafür noch eine Idee?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2116765</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2116765</guid><dc:creator><![CDATA[Rick-K]]></dc:creator><pubDate>Thu, 08 Sep 2011 15:27:44 GMT</pubDate></item><item><title><![CDATA[Reply to Textdatei auslesen on Thu, 08 Sep 2011 15:35:39 GMT]]></title><description><![CDATA[<p>Rick-K schrieb:</p>
<blockquote>
<p>Was ich leider vergessen hatte zu erwähnen war, dass wenn<br />
der Name in der Liste schon existiert, er NICHT nocheinmal<br />
hineingeschrieben werden soll.</p>
<p>Hast du dafür noch eine Idee?</p>
</blockquote>
<p>Du prüft, ob die Anzahl 1 ist und reagierst dann entsprechend. Das ist eine einfache Kontrollstruktur, das solltest du mit deinen Kenntnissen hin bekommen.</p>
<blockquote>
<p>Da ich leider wie gesagt noch ein absouluter Anfänger bin,<br />
war es etwas schwer deine Lösung zu verstehen, habe keine<br />
bis wenig Erfahrung mit den von dir verwendeten Befehlen.</p>
</blockquote>
<p>Werde konkreter: Was verstehst du nicht? Ich vermute mal (multi-)set und 30 und 31 verstehst du nicht. Liege ich da richtig? Aber den groben Programmfluss verstehst du?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2116773</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2116773</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 08 Sep 2011 15:35:39 GMT</pubDate></item><item><title><![CDATA[Reply to Textdatei auslesen on Thu, 08 Sep 2011 16:23:05 GMT]]></title><description><![CDATA[<p>Okey, ich versuche es mal.</p>
<p>Und ja, es war die Multiset Anweisung und 30-31, habe<br />
mit &quot;getline&quot; usw. noch nichts zu tun gehabt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2116803</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2116803</guid><dc:creator><![CDATA[Rick-K]]></dc:creator><pubDate>Thu, 08 Sep 2011 16:23:05 GMT</pubDate></item><item><title><![CDATA[Reply to Textdatei auslesen on Thu, 08 Sep 2011 16:38:14 GMT]]></title><description><![CDATA[<p>Hmm, ok. Vielleicht solltest du noch ein bisschen in deinem Buch weiterlesen. Das mit der if-Abfrage bekommst du bestimmt selber hin, wenn du ein bisschen überlegst.</p>
<p>getline muss da bald kommen, das ist recht grundlegend wenn du irgendetwas zeilenweise einlesen möchtest wie eben deine Namen.</p>
<p>Set sollte auch in nicht zu ferner Zukunft drankommen, wenn dein Buch was taugt. Bis jetzt kannst du dir vorstellen, dass das einfach eine Ansammlung von Daten ist. Mit insert kann man etwas neues zur Sammlung zufügen, mit count kann man zählen wie oft ein bestimmter Datensatz vorkommt. Dadurch dass ich am Anfang multiset&lt;string&gt; gesagt habe, habe ich die Art der Daten auf strings fesgelegt. Das Set kann nämlich alle möglichen Arten von Daten (z.B. ints, floats, eigene Klassen) aufnehmen (aber immer nur eine Sorte auf einmal!). Der Unterschied zwischen Mutliset und Set ist, dass bei einem Multiset gleiche Einträge auch mehrmals vorkommen dürfen, bei einem set ist also count immer 0 oder 1.</p>
<p>Bei den Zeilen 30 und 31 habe ich den Kommaoperator benutzt. Der macht, dass alle Ausdrücke von links nach rechts ausgewertet werden, aber am Ende zählt nur der Ausdruck ganz rechts. also passiert zwar vorher das <code>cout &lt;&lt; &quot;Geben sie den Namen des neuen Members ein: &quot;</code> , aber das while sieht nur <code>while (getline(cin, gelesener_name))</code> . Und jetzt musst du natürlich noch wissen, was der Rückgabewert von getline ist, was wie gesagt bald kommen wird. Um vorweg zu greifen: Die ganzen Operationen die man auf den Streams macht (egal ob Eingabe oder Ausgabe) geben in der Regel hinterher wieder den Stream zurück. Also das getline das ich hier benutzt habe gibt wieder cin zurück. Du könntest also tatsächlich so etwas machen:</p>
<pre><code class="language-cpp">cout &lt;&lt; &quot;Einen Namen angeben, Enter drücken und eine Zahl eingeben, dann Enter drücken: &quot;;
int zahl;
string name;
getline(cin, name) &gt;&gt; zahl;
</code></pre>
<p>Wenn man nun so einen Stream in einem logischen Ausdruck auswertet (so wie hier in der Bedingung der while-Schleife), dann werden sie zu <code>true</code> , wenn alles in Ordnung ist und zu <code>false</code> , dann wenn aus ihnen nicht gelesen werden kann. Letzteres bedeutet, dass vorher irgendetwas schief gegangen ist. Das passiert zum Beispiel, wenn man ein Wort eingibt, aber eine Zahl erwartet wird. Beim zeilenweisen Lesen von Strings kann aber nichts schiefgehen, außer das ende wird erreicht. Die Zeilen 30-31 lesen also zeilenweise strings bis das Ende des Streams erreicht ist. Das ist was der Kommentar mit dem CTRL+Z aussagen will.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2116819</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2116819</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 08 Sep 2011 16:38:14 GMT</pubDate></item><item><title><![CDATA[Reply to Textdatei auslesen on Thu, 08 Sep 2011 17:06:39 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>...</p>
</blockquote>
<p>Ganz großen Dank für deine Erklärung, ich habe es wirklich verstanden . <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>Mein Quelltext sieht jetzt folgendermaßen aus:</p>
<pre><code class="language-cpp">#include&lt;fstream&gt;
#include&lt;iostream&gt;
#include&lt;string&gt;
#include&lt;set&gt;

using namespace std;

int main()
{

  multiset&lt;string&gt; vorhandene_namen;
  {
    ifstream namen_datei(&quot;white-list.txt&quot;);
    string gelesener_name;
    while (getline(namen_datei, gelesener_name))
      vorhandene_namen.insert(gelesener_name);
  }

start:

  ofstream namen_datei(&quot;white-list.txt&quot;, ios::app);

  string gelesener_name;
  while (cout &lt;&lt; &quot;Geben sie den Namen des neuen Members ein: &quot;,
         getline(cin, gelesener_name))
    {

      vorhandene_namen.count(gelesener_name);   

if(vorhandene_namen.count(gelesener_name) == 0)
{           

      cout &lt;&lt; &quot;User &quot; &lt;&lt; gelesener_name &lt;&lt; &quot; wurde hinzugefuegt.&quot;;
      cout &lt;&lt; endl;

      vorhandene_namen.insert(gelesener_name);
      namen_datei &lt;&lt; gelesener_name &lt;&lt; '\n';
      }

else
{
    cout &lt;&lt; &quot;Der Username existiert bereits.&quot;;
    cout &lt;&lt; endl;
    goto start;
}

}

return 0;

}
</code></pre>
<p>Ich denke soweit sollte es bis jetzt stimmen. Ich hoffe ich kann mich bei<br />
(sicher folgenden) weiteren Fragen wieder melden.</p>
<p>Lieben Dank für deine Hilfe. <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>
<p>Ps: Ja mit dem Buch bin ich noch nicht ganz durch, liegt daran dass ich<br />
es nicht finde. <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/2116836</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2116836</guid><dc:creator><![CDATA[Rick-K]]></dc:creator><pubDate>Thu, 08 Sep 2011 17:06:39 GMT</pubDate></item><item><title><![CDATA[Reply to Textdatei auslesen on Thu, 08 Sep 2011 17:09:45 GMT]]></title><description><![CDATA[<p>Pfui! goto Pfui!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2116838</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2116838</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Thu, 08 Sep 2011 17:09:45 GMT</pubDate></item><item><title><![CDATA[Reply to Textdatei auslesen on Thu, 08 Sep 2011 17:22:35 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>Pfui! goto Pfui!</p>
</blockquote>
<p>Auch noch ein goto welches gar nichts macht<sup>*</sup>. Ohne würde es perfekt funktionieren.</p>
<p><sup>*</sup>: Außer den Konstruktor einiger Variablen erneut aufzurufen. Ehrlich gesagt habe ich keine Ahnung, was der Standard in diesem Fall vorsieht und ich will's auch nicht wirklich wissen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2116843</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2116843</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 08 Sep 2011 17:22:35 GMT</pubDate></item><item><title><![CDATA[Reply to Textdatei auslesen on Thu, 08 Sep 2011 17:40:14 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>Pfui! goto Pfui!</p>
</blockquote>
<p>Ich freue mich über jeden Alternativ-Vorschlag <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/2116855</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2116855</guid><dc:creator><![CDATA[Rick-K]]></dc:creator><pubDate>Thu, 08 Sep 2011 17:40:14 GMT</pubDate></item><item><title><![CDATA[Reply to Textdatei auslesen on Thu, 08 Sep 2011 17:43:10 GMT]]></title><description><![CDATA[<p>Rick-K schrieb:</p>
<blockquote>
<p>Ich freue mich über jeden Alternativ-Vorschlag <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>
</blockquote>
<p>Wozu ist es da? Lass es einfach weg und dein Programm mach immer noch das gleiche.</p>
<p>Und woher hast du die Idee? Wenn das aus deinem Buch ist, dann gehört das sicherlich nicht zu der Sorte die was taugt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2116859</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2116859</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 08 Sep 2011 17:43:10 GMT</pubDate></item><item><title><![CDATA[Reply to Textdatei auslesen on Thu, 08 Sep 2011 18:59:26 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Rick-K schrieb:</p>
<blockquote>
<p>Ich freue mich über jeden Alternativ-Vorschlag <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>
</blockquote>
<p>Wozu ist es da? Lass es einfach weg und dein Programm mach immer noch das gleiche.</p>
<p>Und woher hast du die Idee? Wenn das aus deinem Buch ist, dann gehört das sicherlich nicht zu der Sorte die was taugt.</p>
</blockquote>
<p>Ich Probiere nur rum.<br />
Und die Idee dazu, ich habe sie nicht aus meinem Buch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2116870</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2116870</guid><dc:creator><![CDATA[Rick-K]]></dc:creator><pubDate>Thu, 08 Sep 2011 18:59:26 GMT</pubDate></item></channel></rss>