<?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[txt-Datei öffnen und immer bis Zeilenende einlesen]]></title><description><![CDATA[<p>Hy!</p>
<p>Also Ich bin noch recht am Anfang von C++ und hab mir auch schon die FAQ-Einträge zu Dateien in C++ durchgelesen. Es hat mir einiges veranschaulicht, aber zur Problemlösung hat es mir nicht viel gebracht, da so gut wie alle Beispiele mit Befehlen und Methoden funktionierten, die ich noch nicht gelernt habe.</p>
<p>Ich habe folgendes Problem:<br />
Ich soll aus einer Datei (ini.txt) 5 FLOAT und einen String, der entweder &quot;auf&quot; oder &quot;zu &quot; lautet. Die Datei ini.txt ist so aufgebaut, dass , erst die 5 FLOAT kommen, und nach jeder Zahl ein Zeilenumbruch. Als letztes dann die Zeichenfolge und das wars.</p>
<p>Ich habe es bisher nur geschafft in die ini.txt nur den String reinzuschreiben und versuche ihn auszulesen. Ich weiß nicht, wie ich es ausdrücken kann, dass immer nur bis zum Zeilenende gelesen werden soll. Ich finde nur den Ausdruck quelle.eof in dem *** Skript von meinem Prof. Aber nicht mal das funktioniert.</p>
<p>Hier mein bisheriger Versuch:</p>
<p>(pDatei = ini.txt,<br />
pAusgabe ist eine Klasse, die eine Ausgabe gestaltet)</p>
<pre><code>char deckel_f[4];

  ifstream quelle(pDatei, ios::in);		// oeffnet Datei
  if(!quelle)
	  cerr &lt;&lt; &quot;Fehler! &quot; &lt;&lt; pDatei &lt;&lt; &quot; kann nicht geoeffnet werden&quot; &lt;&lt; endl;
  else {
	  char cpy;
	  int i = 0;
	  while(!quelle.eof()) {
		  quelle &gt;&gt; cpy;
		  deckel_f[i] = cpy;
		  i++;
	  }
	  quelle.close();
  }

  cout &lt;&lt; deckel_f &lt;&lt; endl;

  if(!(strcmp(deckel_f, &quot;zu&quot;))) {
	  deckel = 'z';
	  pAusgabe-&gt;zeige(&quot;zu &quot;);
  }
  else if(!(strcmp(deckel_f, &quot;auf&quot;))) {
	  deckel = 'a';
	  pAusgabe-&gt;zeige(&quot;auf&quot;);
  }
  else {
	  cerr &lt;&lt; &quot;Fehler! &quot; &lt;&lt; pDatei &lt;&lt; &quot; konnte nicht gelesen werden&quot; &lt;&lt; endl;
	  deckel = 'a';
	  pAusgabe-&gt;zeige(&quot;auf&quot;);
  }
</code></pre>
<p>DAnke schonmal <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/215617/txt-datei-öffnen-und-immer-bis-zeilenende-einlesen</link><generator>RSS for Node</generator><lastBuildDate>Mon, 12 Oct 2026 03:22:48 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/215617.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 13 Jun 2008 10:30:08 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to txt-Datei öffnen und immer bis Zeilenende einlesen on Fri, 13 Jun 2008 10:30:08 GMT]]></title><description><![CDATA[<p>Hy!</p>
<p>Also Ich bin noch recht am Anfang von C++ und hab mir auch schon die FAQ-Einträge zu Dateien in C++ durchgelesen. Es hat mir einiges veranschaulicht, aber zur Problemlösung hat es mir nicht viel gebracht, da so gut wie alle Beispiele mit Befehlen und Methoden funktionierten, die ich noch nicht gelernt habe.</p>
<p>Ich habe folgendes Problem:<br />
Ich soll aus einer Datei (ini.txt) 5 FLOAT und einen String, der entweder &quot;auf&quot; oder &quot;zu &quot; lautet. Die Datei ini.txt ist so aufgebaut, dass , erst die 5 FLOAT kommen, und nach jeder Zahl ein Zeilenumbruch. Als letztes dann die Zeichenfolge und das wars.</p>
<p>Ich habe es bisher nur geschafft in die ini.txt nur den String reinzuschreiben und versuche ihn auszulesen. Ich weiß nicht, wie ich es ausdrücken kann, dass immer nur bis zum Zeilenende gelesen werden soll. Ich finde nur den Ausdruck quelle.eof in dem *** Skript von meinem Prof. Aber nicht mal das funktioniert.</p>
<p>Hier mein bisheriger Versuch:</p>
<p>(pDatei = ini.txt,<br />
pAusgabe ist eine Klasse, die eine Ausgabe gestaltet)</p>
<pre><code>char deckel_f[4];

  ifstream quelle(pDatei, ios::in);		// oeffnet Datei
  if(!quelle)
	  cerr &lt;&lt; &quot;Fehler! &quot; &lt;&lt; pDatei &lt;&lt; &quot; kann nicht geoeffnet werden&quot; &lt;&lt; endl;
  else {
	  char cpy;
	  int i = 0;
	  while(!quelle.eof()) {
		  quelle &gt;&gt; cpy;
		  deckel_f[i] = cpy;
		  i++;
	  }
	  quelle.close();
  }

  cout &lt;&lt; deckel_f &lt;&lt; endl;

  if(!(strcmp(deckel_f, &quot;zu&quot;))) {
	  deckel = 'z';
	  pAusgabe-&gt;zeige(&quot;zu &quot;);
  }
  else if(!(strcmp(deckel_f, &quot;auf&quot;))) {
	  deckel = 'a';
	  pAusgabe-&gt;zeige(&quot;auf&quot;);
  }
  else {
	  cerr &lt;&lt; &quot;Fehler! &quot; &lt;&lt; pDatei &lt;&lt; &quot; konnte nicht gelesen werden&quot; &lt;&lt; endl;
	  deckel = 'a';
	  pAusgabe-&gt;zeige(&quot;auf&quot;);
  }
</code></pre>
<p>DAnke schonmal <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/1528306</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1528306</guid><dc:creator><![CDATA[ex.aveal]]></dc:creator><pubDate>Fri, 13 Jun 2008 10:30:08 GMT</pubDate></item><item><title><![CDATA[Reply to txt-Datei öffnen und immer bis Zeilenende einlesen on Fri, 13 Jun 2008 11:26:44 GMT]]></title><description><![CDATA[<p>Verwende doch getline um immer die ganzen zeilen einzulesen. Außerdem wäre es eine gute Idee statt der char-Arrays std::string zu nehmen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1528333</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1528333</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Fri, 13 Jun 2008 11:26:44 GMT</pubDate></item><item><title><![CDATA[Reply to txt-Datei öffnen und immer bis Zeilenende einlesen on Fri, 13 Jun 2008 12:01:45 GMT]]></title><description><![CDATA[<p>Braunstein schrieb:</p>
<blockquote>
<p>Verwende doch getline um immer die ganzen zeilen einzulesen. Außerdem wäre es eine gute Idee statt der char-Arrays std::string zu nehmen.</p>
</blockquote>
<p>getline geht leider nur mit string, und &quot;string&quot; hatte ich noch nicht. d.h. ich kanns auch leider nicht benutzen. (zudem funktionieren anscheinend die funktionen wie strcpy etc nicht mit &quot;string&quot;).</p>
<p>werde es wohl anders machen müssen: erst die komplette datei einlesen in einen char-array und dann bei '\n' immer abtrennen.<br />
und dann noch in floats konvertieren. oh man, mal schaun ob ich das hinbekomm...</p>
<p>hab nur ein problem:<br />
irgendwie macht das eof nicht richtig. wenn ich alles einlese bis (!quelle.eof) steht in dem array danach immernoch voll der mist. macht der da kein \0 am ende hin?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1528349</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1528349</guid><dc:creator><![CDATA[ex.aveal]]></dc:creator><pubDate>Fri, 13 Jun 2008 12:01:45 GMT</pubDate></item><item><title><![CDATA[Reply to txt-Datei öffnen und immer bis Zeilenende einlesen on Fri, 13 Jun 2008 12:03:52 GMT]]></title><description><![CDATA[<p>ODER:</p>
<p>gibt es eine möglichkeit die getline-funktion zu benutzen mit char-arrys? nicht oder? also mein compilter mozt rum wied sau <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>oder kann man dieses &quot;string&quot; einfach in nen char array umwandeln? ich hab ehrlich gesagt keinen plan was &quot;string&quot; ist, und in den faqs steht immer dauernd was von vector und container etc. auch noch keinen schimmer.<br />
für nen anfänger bring die faq nicht viel <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/1528352</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1528352</guid><dc:creator><![CDATA[ex.aveal]]></dc:creator><pubDate>Fri, 13 Jun 2008 12:03:52 GMT</pubDate></item><item><title><![CDATA[Reply to txt-Datei öffnen und immer bis Zeilenende einlesen on Fri, 13 Jun 2008 12:17:32 GMT]]></title><description><![CDATA[<p>Es gibt zwei getline-Funktionen. Eine ist arbeitet in der tat nur mit std:.string zusammen und ist auch im selben Header mit deklariert. Die andere Variante ist eine Memberfunktion von istream und arbeitet mit char-Arrays zusammen. Die könntest du ja nehmen.<br />
<a href="http://www.dinkumware.com/manuals/?manual=compleat&amp;Search=getline&amp;page=istream.html#basic_istream::getline" rel="nofollow">http://www.dinkumware.com/manuals/?manual=compleat&amp;Search=getline&amp;page=istream.html#basic_istream::getline</a><br />
std::string ist eine Klasse für Strings welche das Handling gegenüber char-Arrays deutlich vereinfacht. Z.Bsp. hat sie eine eigene Speicherverwaltung, so dass du dich darum nicht selber kümmern mußt.<br />
Eine Referenz findest du z.Bsp. hier<br />
<a href="http://www.dinkumware.com/manuals/?manual=compleat&amp;page=string2.html#basic_string::basic_string" rel="nofollow">http://www.dinkumware.com/manuals/?manual=compleat&amp;page=string2.html#basic_string::basic_string</a><br />
hier noch weiter Seiten<br />
<a href="http://www.hlrs.de/people/mueller/tutorials/script/scriptse30.html" rel="nofollow">http://www.hlrs.de/people/mueller/tutorials/script/scriptse30.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1528362</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1528362</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Fri, 13 Jun 2008 12:17:32 GMT</pubDate></item><item><title><![CDATA[Reply to txt-Datei öffnen und immer bis Zeilenende einlesen on Fri, 13 Jun 2008 12:25:34 GMT]]></title><description><![CDATA[<p>ex.aveal schrieb:</p>
<blockquote>
<p>Ich soll aus einer Datei (ini.txt) 5 FLOAT und einen String, der entweder &quot;auf&quot; oder &quot;zu &quot; lautet. Die Datei ini.txt ist so aufgebaut, dass , erst die 5 FLOAT kommen, und nach jeder Zahl ein Zeilenumbruch. Als letztes dann die Zeichenfolge und das wars.</p>
</blockquote>
<p>das geht einfach mit:</p>
<pre><code class="language-cpp">#include &lt;string&gt;
#include &lt;fstream&gt;
#include &lt;iostream&gt;

using namespace std;

int main()
{
    const char* pDatei = &quot;ini.txt&quot;;
    float f1, f2, f3, f4, f5;
    string aufZu;
    ifstream datei( pDatei );
    if( !datei.is_open() )
        cerr &lt;&lt; &quot;Fehler beim Oeffnen der Datei &quot; &lt;&lt; pDatei &lt;&lt; endl;
    if( datei &gt;&gt; f1 &gt;&gt; f2 &gt;&gt; f3 &gt;&gt; f4 &gt;&gt; f5 &gt;&gt; aufZu )
    {
        cout &lt;&lt; &quot;Lesen ok&quot; &lt;&lt; endl;
        if( aufZu == &quot;auf&quot; )
        {
            cout &lt;&lt; &quot;Text war 'auf'&quot; &lt;&lt; endl;
        }
        else if( aufZu == &quot;zu&quot; )
        {
            cout &lt;&lt; &quot;Text war 'zu'&quot; &lt;&lt; endl;
        }
        // .. usw.
    }
    else
        cerr &lt;&lt; &quot;Fehler beim Lesen&quot; &lt;&lt; endl;
    return 0;
}
</code></pre>
<p>ex.aveal schrieb:</p>
<blockquote>
<p>oder kann man dieses &quot;string&quot; einfach in nen char array umwandeln?</p>
</blockquote>
<p>kann man mit der Methode c_str(); muss man aber nicht. Wenn Du nur wissen willst, ob es &quot;auf&quot; oder &quot;zu&quot; war, so kannst Du es einfach so machen wie in meinem Vorschlag oben.</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1528369</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1528369</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Fri, 13 Jun 2008 12:25:34 GMT</pubDate></item><item><title><![CDATA[Reply to txt-Datei öffnen und immer bis Zeilenende einlesen on Fri, 13 Jun 2008 12:39:45 GMT]]></title><description><![CDATA[<p>Werner Salomon schrieb:</p>
<blockquote>
<p>ex.aveal schrieb:</p>
<blockquote>
<p>Ich soll aus einer Datei (ini.txt) 5 FLOAT und einen String, der entweder &quot;auf&quot; oder &quot;zu &quot; lautet. Die Datei ini.txt ist so aufgebaut, dass , erst die 5 FLOAT kommen, und nach jeder Zahl ein Zeilenumbruch. Als letztes dann die Zeichenfolge und das wars.</p>
</blockquote>
<p>das geht einfach mit:</p>
<pre><code class="language-cpp">#include &lt;string&gt;
#include &lt;fstream&gt;
#include &lt;iostream&gt;

using namespace std;

int main()
{
    const char* pDatei = &quot;ini.txt&quot;;
    float f1, f2, f3, f4, f5;
    string aufZu;
    ifstream datei( pDatei );
    if( !datei.is_open() )
        cerr &lt;&lt; &quot;Fehler beim Oeffnen der Datei &quot; &lt;&lt; pDatei &lt;&lt; endl;
    if( datei &gt;&gt; f1 &gt;&gt; f2 &gt;&gt; f3 &gt;&gt; f4 &gt;&gt; f5 &gt;&gt; aufZu )
    {
        cout &lt;&lt; &quot;Lesen ok&quot; &lt;&lt; endl;
        if( aufZu == &quot;auf&quot; )
        {
            cout &lt;&lt; &quot;Text war 'auf'&quot; &lt;&lt; endl;
        }
        else if( aufZu == &quot;zu&quot; )
        {
            cout &lt;&lt; &quot;Text war 'zu'&quot; &lt;&lt; endl;
        }
        // .. usw.
    }
    else
        cerr &lt;&lt; &quot;Fehler beim Lesen&quot; &lt;&lt; endl;
    return 0;
}
</code></pre>
<p>ex.aveal schrieb:</p>
<blockquote>
<p>oder kann man dieses &quot;string&quot; einfach in nen char array umwandeln?</p>
</blockquote>
<p>kann man mit der Methode c_str(); muss man aber nicht. Wenn Du nur wissen willst, ob es &quot;auf&quot; oder &quot;zu&quot; war, so kannst Du es einfach so machen wie in meinem Vorschlag oben.</p>
<p>Gruß<br />
Werner</p>
</blockquote>
<p>verdammt, du bist mein europameister 2008 <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /> und vielen dank auch an die anderen für die super schnelle und gute hilfe hier!!! <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>aber wie gesagt: für einen anfänger ist die FAQ wirklich nicht oft sehr hilfreich, denn die beispiele, mit denen bestimmte funktionen und methoden beschrieben werden sind oft viel zu komplex und nicht nach dem prinzip &quot;möglichst einfach erklärt&quot;, oder: wir lernen c++ einfach nicht nach der besten lernreihenfolge an der hochschule <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1528381</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1528381</guid><dc:creator><![CDATA[ex.aveal]]></dc:creator><pubDate>Fri, 13 Jun 2008 12:39:45 GMT</pubDate></item><item><title><![CDATA[Reply to txt-Datei öffnen und immer bis Zeilenende einlesen on Fri, 13 Jun 2008 12:46:13 GMT]]></title><description><![CDATA[<p>ok .. und hier die Variante für die professionelleren Programmierer:</p>
<pre><code class="language-cpp">#include &lt;string&gt;
#include &lt;fstream&gt;
#include &lt;iostream&gt;

using namespace std;

namespace status
{
    enum Type
    {
        auf, zu
    };
    std::ostream&amp; operator&lt;&lt;( std::ostream&amp; out, Type aufZu )
    {
        switch( aufZu )
        {
        case auf: out &lt;&lt; &quot;auf&quot;;     break;
        case zu:  out &lt;&lt; &quot;zu&quot;;      break;
        default:
            out &lt;&lt; &quot;&lt;???&gt;&quot;;
            break;
        }
        return out;
    }
    std::istream&amp; operator&gt;&gt;( std::istream&amp; in, Type&amp; aufZu )
    {
        std::string str;
        if( in &gt;&gt; str )
        {
            if( str == &quot;auf&quot; )
                aufZu = auf;
            else if( str == &quot;zu&quot; )
                aufZu = zu;
            else
                in.setstate( std::ios_base::failbit ); // Lesefehler
        }
        return in;
    }
}

int main()
{
    const char* pDatei = &quot;ini.txt&quot;;
    float f1, f2, f3, f4, f5;
    status::Type aufZu;
    ifstream datei( pDatei );
    if( !datei.is_open() )
        cerr &lt;&lt; &quot;Fehler beim Oeffnen der Datei &quot; &lt;&lt; pDatei &lt;&lt; endl;
    if( datei &gt;&gt; f1 &gt;&gt; f2 &gt;&gt; f3 &gt;&gt; f4 &gt;&gt; f5 &gt;&gt; aufZu )
    {
        cout &lt;&lt; &quot;Lesen ok; gelesen:&quot; &lt;&lt; aufZu &lt;&lt; endl;
        // .. usw.
    }
    else
        cerr &lt;&lt; &quot;Fehler beim Lesen&quot; &lt;&lt; endl;
    return 0;
}
</code></pre>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1528388</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1528388</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Fri, 13 Jun 2008 12:46:13 GMT</pubDate></item><item><title><![CDATA[Reply to txt-Datei öffnen und immer bis Zeilenende einlesen on Fri, 13 Jun 2008 15:01:10 GMT]]></title><description><![CDATA[<p>ex.aveal schrieb:</p>
<blockquote>
<p>oder: wir lernen c++ einfach nicht nach der besten lernreihenfolge an der hochschule <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
</blockquote>
<p>Oder noch drastischer ausgedrückt: Ihr lernt erstmal kein C++ (char*, die C-Stringbibliotheken etc. deuten eindeutig auf C-Programmierung hin). Eigentlich sollte jeder Dozent erschlagen werden für so etwas... (Nichts dagegen das man char* nspricht, aber unter C++ erwarte ich auch erstmal C++...)</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1528475</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1528475</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Fri, 13 Jun 2008 15:01:10 GMT</pubDate></item><item><title><![CDATA[Reply to txt-Datei öffnen und immer bis Zeilenende einlesen on Sat, 14 Jun 2008 06:26:01 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">std::istream&amp; operator&gt;&gt;( std::istream&amp; in, Type&amp; aufZu ) 
     { 
         std::string str; 
         if( in &gt;&gt; str ) 
         { 
             if( str == &quot;auf&quot; ) 
                 aufZu = auf; 
             else if( str == &quot;zu&quot; ) 
                 aufZu = zu; 
             else 
                 in.setstate( std::ios_base::failbit ); // Lesefehler 
         } 
         return in; 
     } 
}
</code></pre>
<p>Schreibt man nach einem Lesefehler nicht in den Stream zurück?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1528756</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1528756</guid><dc:creator><![CDATA[Huch]]></dc:creator><pubDate>Sat, 14 Jun 2008 06:26:01 GMT</pubDate></item></channel></rss>