<?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[Konsolenproblem]]></title><description><![CDATA[<p>Hallo,<br />
ich versuche gerade eine Datei (.txt) einzulesen um diese dann in der Konsole auszugeben, allerdings zeigt mir die Konsole nichts, lediglich einen &quot;Black Screen&quot;.</p>
<p>Hier der Code:</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;string&gt;

using namespace std;

void Load()
{
    string text;
    ifstream file;								//Datei-Handle
    file.open(&quot;Datei_2.txt&quot;, ios::in);			//Datei wird geöffnet

												// Solange noch Daten vorhanden sind wird die Schleife ausgeführt
    while (!file.eof()) 
	{
        getline(file, text);					//Es wird jeweils eine Zeile ausgelesen
        cout &lt;&lt; text &lt;&lt; endl;
	}

    file.close();
} 

int main(int argc, char **argv)
{
    Load();
    return 0;
}
</code></pre>
<p>Kann mir bitte jemand helfen und mir sagen, wo mein Fehler liegt.<br />
Wäre dankbar.<br />
(Programm: Visual Studio C++)</p>
<p>Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/308729/konsolenproblem</link><generator>RSS for Node</generator><lastBuildDate>Sat, 04 Apr 2026 21:08:15 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/308729.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 04 Oct 2012 06:07:55 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Konsolenproblem on Thu, 04 Oct 2012 06:07:55 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich versuche gerade eine Datei (.txt) einzulesen um diese dann in der Konsole auszugeben, allerdings zeigt mir die Konsole nichts, lediglich einen &quot;Black Screen&quot;.</p>
<p>Hier der Code:</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;string&gt;

using namespace std;

void Load()
{
    string text;
    ifstream file;								//Datei-Handle
    file.open(&quot;Datei_2.txt&quot;, ios::in);			//Datei wird geöffnet

												// Solange noch Daten vorhanden sind wird die Schleife ausgeführt
    while (!file.eof()) 
	{
        getline(file, text);					//Es wird jeweils eine Zeile ausgelesen
        cout &lt;&lt; text &lt;&lt; endl;
	}

    file.close();
} 

int main(int argc, char **argv)
{
    Load();
    return 0;
}
</code></pre>
<p>Kann mir bitte jemand helfen und mir sagen, wo mein Fehler liegt.<br />
Wäre dankbar.<br />
(Programm: Visual Studio C++)</p>
<p>Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2256869</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2256869</guid><dc:creator><![CDATA[PDD31]]></dc:creator><pubDate>Thu, 04 Oct 2012 06:07:55 GMT</pubDate></item><item><title><![CDATA[Reply to Konsolenproblem on Thu, 04 Oct 2012 06:39:10 GMT]]></title><description><![CDATA[<p>Das Programm funktioniert. Vermutlich hast Du die einzulesende Datei nicht im Verzeichnis der ausführbaren Datei liegen?</p>
<p>Folgendes könntest Du vereinfachen:</p>
<pre><code class="language-cpp">void Load()
{

    ifstream file(&quot;Datei_2.txt&quot;);    //Datei-Handle, Datei wird geöffnet

    if(!file)
    {
        cout &lt;&lt; &quot;Datei konnte nicht geoeffnet werden\n&quot;;
        return;
    }   

    string text;  //wird erst jetzt benötigt
    while(getline(file, text))  //solange Zeilen gefunden werden
        cout &lt;&lt; text &lt;&lt; '\n';
} //Scope - Ende --&gt; file wird zerstört und schliesst die Datei
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2256873</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2256873</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Thu, 04 Oct 2012 06:39:10 GMT</pubDate></item><item><title><![CDATA[Reply to Konsolenproblem on Thu, 04 Oct 2012 06:41:36 GMT]]></title><description><![CDATA[<p>Die Load-Funktion kann man ganz einfach umschreiben, da du viele unnötige Sachen machst:</p>
<pre><code class="language-cpp">void Load() 
{
    ifstream file(&quot;Datei_2.txt&quot;);//Es gibt auch den entsprechenden Konstruktor, außerdem muss das ios::in flag bei std::ifstream sowieso nie angegeben werden

    for(std::string text;getline(file, text);) //getline gibt den Stream zurück, der lässt sich zu einem boolschen Wert konvertieren
        cout &lt;&lt; text &lt;&lt; '\n'; //nicht flushen
} ///Der Stream wird dank RAII sowieso beim Zerstören geschlossen
</code></pre>
<p>Man könnte sogar noch weiter gehen, da du hier einfach nur den Inhalt der Datei ausgeben willst:</p>
<pre><code class="language-cpp">std::cout &lt;&lt; std::ifstream(&quot;Datei_2.txt&quot;).rdbuf();
</code></pre>
<p><strong>Zu deinem Problem:</strong> Es wird nichts ausgegeben, weil entweder die Datei leer ist, oder du den falschen Pfad angibst (guck mal, aus welchem Pfad VS deine Binary laufen lässt).<br />
Zum Beispiel lässt sich letzteres Prüfen in dem du den Stream direkt nach dem erstellen mit</p>
<pre><code class="language-cpp">stream.good()
</code></pre>
<p>prüfst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2256874</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2256874</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Thu, 04 Oct 2012 06:41:36 GMT</pubDate></item><item><title><![CDATA[Reply to Konsolenproblem on Thu, 04 Oct 2012 07:06:40 GMT]]></title><description><![CDATA[<p>Vielen Dank <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>Dann ist mein Problem, dass ich das den falschen Pfad angegeben habe, bzw. die Datei nicht im Verzeichnis der ausführbaren Dateien liegt.</p>
<p>Wie bekomme ich diese in das Verzeichnis, bzw wo ist das Verzeichnis zu finden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2256883</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2256883</guid><dc:creator><![CDATA[PDD31]]></dc:creator><pubDate>Thu, 04 Oct 2012 07:06:40 GMT</pubDate></item><item><title><![CDATA[Reply to Konsolenproblem on Thu, 04 Oct 2012 07:59:37 GMT]]></title><description><![CDATA[<p>PDD31 schrieb:</p>
<blockquote>
<p>bzw wo ist das Verzeichnis zu finden?</p>
</blockquote>
<p>Das hängt davon ab, wie, bzw. mit welcher IDE Du Dein Programm erstellst ...<br />
Du kannst aber einfach den vollständig qualifizierten Pfad Deiner zu verarbeitenden Datei angeben, zB:</p>
<pre><code class="language-cpp">ifstream file(&quot;C:\\tmp\\meinVerzeichnis\\Datei_2.txt&quot;);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2256896</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2256896</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Thu, 04 Oct 2012 07:59:37 GMT</pubDate></item><item><title><![CDATA[Reply to Konsolenproblem on Thu, 04 Oct 2012 08:04:00 GMT]]></title><description><![CDATA[<p>Belli schrieb:</p>
<blockquote>
<p>vollständig qualifizierten</p>
</blockquote>
<p>Du meinst <em>absoluten</em> <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/2256897</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2256897</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Thu, 04 Oct 2012 08:04:00 GMT</pubDate></item><item><title><![CDATA[Reply to Konsolenproblem on Thu, 04 Oct 2012 08:28:55 GMT]]></title><description><![CDATA[<p>Du hast zumindest schon mal richtig erkannt, dass ein nicht absoluter Pfad nicht vollständig ist.<br />
Ansonsten weiß ich ja jetzt, wen ich in Zukunft fragen kann, wenn ich mal nicht weiß, was ich meine.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2256902</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2256902</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Thu, 04 Oct 2012 08:28:55 GMT</pubDate></item><item><title><![CDATA[Reply to Konsolenproblem on Thu, 04 Oct 2012 08:37:30 GMT]]></title><description><![CDATA[<p>PDD31 schrieb:</p>
<blockquote>
<pre><code class="language-cpp">// ...
    // Solange noch Daten vorhanden sind wird die Schleife ausgeführt
    while (!file.eof()) 
	{
        // ...
	}
// ...
</code></pre>
</blockquote>
<p>Kommentar und Code passen nicht zusammen.<br />
Aber der Fehler ist weitverbreitet und taucht hier immer wieder auf.</p>
<p>Heute möchte ich eine neue Form ausprobieren, um Dir das auszutreiben! <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>Um zu zeigen, warum Du input so einlesen solltest, wie z.B. Sone es vorschlägt, hier ein hoffentlich nicht zu schräger Vergleich mit dem sprichwörtlichen Krug, der solange zum Brunnen geht, bis er bricht (<a href="http://de.wiktionary.org/wiki/Der_Krug_geht_so_lange_zum_Brunnen,_bis_er_bricht" rel="nofollow">http://de.wiktionary.org/wiki/Der_Krug_geht_so_lange_zum_Brunnen,_bis_er_bricht</a>).</p>
<p>Ich denke Du erkennst die Parallelen zum <code>std::istream</code> , und warum die erste Variante <code>gehe_zum_brunnen()</code> einmal häufiger aufruft als nötig:<br />
- ein <code>istream</code> setzt das <code>eofbit</code> , wenn eine input operation das Ende der Eingabe erreicht hat.<br />
- ein <code>Krug</code> setzt das <code>ist_gebrochen_</code> flag, wenn eine <code>gehe_zum_brunnen()</code> operation, das Ende seiner Lebenszeit erreicht hat.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

class Krug{
public:
  Krug(int max = 5) : max_fuellungen_(max), fuellungen_(0), ist_gebrochen_(false){}
  bool ist_gebrochen() const { return ist_gebrochen_; }
  /* gehe_zum_brunnen()
   * wenn der Krug noch gefuellt werden kann: fuellt den Krug
   * sonst:
   * setzt das ist_gebrochen_ flag und macht nichts
   * Return:
   * true wenn, der Krug gefuellt werden konnte, false sonst
   */
  bool gehe_zum_brunnen(){
    if( !(fuellungen_ &lt; max_fuellungen_) ){
      ist_gebrochen_ = true;
      return false;
    }
    ++fuellungen_;
    return true;
  }
private:
  int  max_fuellungen_;
  int fuellungen_;
  bool ist_gebrochen_;
};

int main(){
    Krug krug0, krug1;
    int i = 0, j = 0;

    /* Deine Variante: solange ist_gebrochen() false ist, gehe_zum_brunnen() und... */
    std::cout &lt;&lt; &quot;Du:\n&quot;;
    while(!krug0.ist_gebrochen()){
      std::cout &lt;&lt; &quot;gehe zum Brunnen.(&quot; &lt;&lt; i &lt;&lt; &quot;)\n&quot;;
      krug0.gehe_zum_brunnen();
      ++i;
    }

    std::cout &lt;&lt; &quot;\nIch:\n&quot;;
    /* Meine Variante: gehe_zum_brunnen() und wenn das klappt, dann... */
    while(krug1.gehe_zum_brunnen()){
      std::cout &lt;&lt; &quot;gehe zum Brunnen.(&quot; &lt;&lt; j &lt;&lt; &quot;)\n&quot;;
      ++j;
    }
}
</code></pre>
<p>Einleuchtend?<br />
<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/2256904</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2256904</guid><dc:creator><![CDATA[Furble Wurble]]></dc:creator><pubDate>Thu, 04 Oct 2012 08:37:30 GMT</pubDate></item><item><title><![CDATA[Reply to Konsolenproblem on Thu, 04 Oct 2012 09:39:37 GMT]]></title><description><![CDATA[<p>Furble Wurble schrieb:</p>
<blockquote>
<p>PDD31 schrieb:</p>
<blockquote>
<pre><code class="language-cpp">// ...
    // Solange noch Daten vorhanden sind wird die Schleife ausgeführt
    while (!file.eof()) 
	{
        // ...
	}
// ...
</code></pre>
</blockquote>
<p>Kommentar und Code passen nicht zusammen.<br />
Aber der Fehler ist weitverbreitet und taucht hier immer wieder auf.</p>
<p>Heute möchte ich eine neue Form ausprobieren, um Dir das auszutreiben! <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>Um zu zeigen, warum Du input so einlesen solltest, wie z.B. Sone es vorschlägt, hier ein hoffentlich nicht zu schräger Vergleich mit dem sprichwörtlichen Krug, der solange zum Brunnen geht, bis er bricht (<a href="http://de.wiktionary.org/wiki/Der_Krug_geht_so_lange_zum_Brunnen,_bis_er_bricht" rel="nofollow">http://de.wiktionary.org/wiki/Der_Krug_geht_so_lange_zum_Brunnen,_bis_er_bricht</a>).</p>
<p>Ich denke Du erkennst die Parallelen zum <code>std::istream</code> , und warum die erste Variante <code>gehe_zum_brunnen()</code> einmal häufiger aufruft als nötig:<br />
- ein <code>istream</code> setzt das <code>eofbit</code> , wenn eine input operation das Ende der Eingabe erreicht hat.<br />
- ein <code>Krug</code> setzt das <code>ist_gebrochen_</code> flag, wenn eine <code>gehe_zum_brunnen()</code> operation, das Ende seiner Lebenszeit erreicht hat.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

class Krug{
public:
  Krug(int max = 5) : max_fuellungen_(max), fuellungen_(0), ist_gebrochen_(false){}
  bool ist_gebrochen() const { return ist_gebrochen_; }
  /* gehe_zum_brunnen()
   * wenn der Krug noch gefuellt werden kann: fuellt den Krug
   * sonst:
   * setzt das ist_gebrochen_ flag und macht nichts
   * Return:
   * true wenn, der Krug gefuellt werden konnte, false sonst
   */
  bool gehe_zum_brunnen(){
    if( !(fuellungen_ &lt; max_fuellungen_) ){
      ist_gebrochen_ = true;
      return false;
    }
    ++fuellungen_;
    return true;
  }
private:
  int  max_fuellungen_;
  int fuellungen_;
  bool ist_gebrochen_;
};

int main(){
    Krug krug0, krug1;
    int i = 0, j = 0;

    /* Deine Variante: solange ist_gebrochen() false ist, gehe_zum_brunnen() und... */
    std::cout &lt;&lt; &quot;Du:\n&quot;;
    while(!krug0.ist_gebrochen()){
      std::cout &lt;&lt; &quot;gehe zum Brunnen.(&quot; &lt;&lt; i &lt;&lt; &quot;)\n&quot;;
      krug0.gehe_zum_brunnen();
      ++i;
    }
    
    std::cout &lt;&lt; &quot;\nIch:\n&quot;;
    /* Meine Variante: gehe_zum_brunnen() und wenn das klappt, dann... */
    while(krug1.gehe_zum_brunnen()){
      std::cout &lt;&lt; &quot;gehe zum Brunnen.(&quot; &lt;&lt; j &lt;&lt; &quot;)\n&quot;;
      ++j;
    }
}
</code></pre>
<p>Einleuchtend?<br />
<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>Ist einleuchtend <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="👍"
    /> <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="🙂"
    /> werde mich bemühen es in Zukunft besser zu machen <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>Belli schrieb:</p>
<blockquote>
<p>PDD31 schrieb:</p>
<blockquote>
<p>bzw wo ist das Verzeichnis zu finden?</p>
</blockquote>
<p>Das hängt davon ab, wie, bzw. mit welcher IDE Du Dein Programm erstellst ...<br />
Du kannst aber einfach den vollständig qualifizierten Pfad Deiner zu verarbeitenden Datei angeben, zB:</p>
<pre><code class="language-cpp">ifstream file(&quot;C:\\tmp\\meinVerzeichnis\\Datei_2.txt&quot;);
</code></pre>
</blockquote>
<p>Danke Belli, jetzt funktioniert alles so wie gewollt <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/2256923</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2256923</guid><dc:creator><![CDATA[PDD31]]></dc:creator><pubDate>Thu, 04 Oct 2012 09:39:37 GMT</pubDate></item><item><title><![CDATA[Reply to Konsolenproblem on Thu, 04 Oct 2012 11:45:16 GMT]]></title><description><![CDATA[<p>was muss ich tun, wenn ich jetzt erst ab Zeile 44, Stelle 23 meiner .txt Datei lesen will, da fehlt mir gerade die Idee.</p>
<p>Ich hab den Code von Sone genommen:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;string&gt;

using namespace std;

void Load()
{
    ifstream file(&quot;C:\\Users\\patrick.dahlke\\Documents\\SWProtokoll\\Datei_2.txt&quot;);		

    for(std::string text;getline(file, text);) 
        cout &lt;&lt; text &lt;&lt; '\n'; 

} 

int main(int argc, char **argv)
{
    Load();
	getchar();
	getchar();
    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2256959</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2256959</guid><dc:creator><![CDATA[PDD31]]></dc:creator><pubDate>Thu, 04 Oct 2012 11:45:16 GMT</pubDate></item><item><title><![CDATA[Reply to Konsolenproblem on Thu, 04 Oct 2012 12:32:03 GMT]]></title><description><![CDATA[<p>PDD31 schrieb:</p>
<blockquote>
<p>was muss ich tun, wenn ich jetzt erst ab Zeile 44, Stelle 23 meiner .txt Datei lesen will, da fehlt mir gerade die Idee.</p>
</blockquote>
<p>Schau mal, ob das so klappt:</p>
<pre><code class="language-cpp">#include &lt;fstream&gt;
#include &lt;iostream&gt;
#include &lt;limits&gt;
#include &lt;string&gt;
using namespace std;

template&lt;size_t N&gt;
istream&amp; skip_line(istream&amp; in)
{
	for(size_t i=0; i&lt;N; ++i)
		in.ignore( numeric_limits&lt;streamsize&gt;::max(), '\n' );
	return in;
}

template&lt;size_t N&gt;
istream&amp; skip_char(istream&amp; in)
{
	char c;
	for(size_t i=0; i&lt;N; ++i)
		in &gt;&gt; noskipws &gt;&gt; c;
	return in;
}

int main()
{
	ifstream file(&quot;test.txt&quot;);
	file &gt;&gt; skip_line&lt;43&gt;;
	file &gt;&gt; skip_char&lt;22&gt;;
	for(string s; getline(file,s); cout&lt;&lt;s&lt;&lt;'\n');
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2256977</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2256977</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Thu, 04 Oct 2012 12:32:03 GMT</pubDate></item><item><title><![CDATA[Reply to Konsolenproblem on Thu, 04 Oct 2012 12:37:59 GMT]]></title><description><![CDATA[<blockquote>
<pre><code class="language-cpp">template&lt;size_t N&gt; 
istream&amp; skip_char(istream&amp; in) 
{ 
    char c; 
    for(size_t i=0; i&lt;N; ++i) 
        in &gt;&gt; noskipws &gt;&gt; c; 
    return in; 
}
</code></pre>
</blockquote>
<p><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>
<pre><code class="language-cpp">template&lt;size_t N&gt; 
istream&amp; skip_char(istream&amp; in) 
{ 
    return in.ignore(N);
}
</code></pre>
<p>Und eigentlich kann man das gleich schreiben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2256978</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2256978</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Thu, 04 Oct 2012 12:37:59 GMT</pubDate></item><item><title><![CDATA[Reply to Konsolenproblem on Thu, 04 Oct 2012 12:38:22 GMT]]></title><description><![CDATA[<p><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="😃"
    /> <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="😃"
    /> Was hab ich den da gemacht. Änder mal eine Funktion ab:</p>
<pre><code class="language-cpp">template&lt;size_t N&gt;
istream&amp; skip_char(istream&amp; in)
{
	return in.ignore( N );
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2256979</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2256979</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Thu, 04 Oct 2012 12:38:22 GMT</pubDate></item><item><title><![CDATA[Reply to Konsolenproblem on Thu, 04 Oct 2012 12:43:46 GMT]]></title><description><![CDATA[<p>PDD31 schrieb:</p>
<blockquote>
<p>was muss ich tun, wenn ich jetzt erst ab Zeile 44, Stelle 23 meiner .txt Datei lesen will, da fehlt mir gerade die Idee.</p>
</blockquote>
<p>Das geht nicht, wenn die Zeilen unterschiedlich lang sind. Du musst dann einfach die ersten 43 Zeilen überlesen - das heißt, einlesen und nicht weiter verarbeiten - wenn Du die 44 Zeile eingelesen hast, erst mal feststellen, ob sie überhaupt 23 Zeichen hat, und dann halt die ersten 22 Zeichen aus Deinem String werfen und ab da dann weiter wie gehabt ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2256981</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2256981</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Thu, 04 Oct 2012 12:43:46 GMT</pubDate></item><item><title><![CDATA[Reply to Konsolenproblem on Thu, 04 Oct 2012 13:50:29 GMT]]></title><description><![CDATA[<p>Danke out und Sone,</p>
<p>Belli schrieb:</p>
<blockquote>
<p>PDD31 schrieb:</p>
<blockquote>
<p>was muss ich tun, wenn ich jetzt erst ab Zeile 44, Stelle 23 meiner .txt Datei lesen will, da fehlt mir gerade die Idee.</p>
</blockquote>
<p>Das geht nicht, wenn die Zeilen unterschiedlich lang sind. Du musst dann einfach die ersten 43 Zeilen überlesen - das heißt, einlesen und nicht weiter verarbeiten - wenn Du die 44 Zeile eingelesen hast, erst mal feststellen, ob sie überhaupt 23 Zeichen hat, und dann halt die ersten 22 Zeichen aus Deinem String werfen und ab da dann weiter wie gehabt ...</p>
</blockquote>
<p>In dem Fall ist es so, dass die Datei in Zeile 44 immer mindesten 23 Stellen hat<br />
und das Gesuchte auch immer an dieser Stelle steht, also müsste das von out eigentlich passen <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 />
Danke <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2257015</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2257015</guid><dc:creator><![CDATA[PDD31]]></dc:creator><pubDate>Thu, 04 Oct 2012 13:50:29 GMT</pubDate></item><item><title><![CDATA[Reply to Konsolenproblem on Fri, 05 Oct 2012 07:27:01 GMT]]></title><description><![CDATA[<p>Ich hab jetzt am Ende der Datei noch ziemlich viel Müll, zwischendrin eine Zeile die ich brauche und ganz am Ende nochmal eine wichtige Zeile.</p>
<p>Wie kann ich jetzt die Zeilen dwischendrin rausschmeisen?</p>
<p>Kennung der Zeilen die nich die Zeilenzahl sondern ein Wort.<br />
Ich hab sowas noch nie gemacht!</p>
<p>muss ich da mit fseek in eine Zeile springen, prüfen ob das gewünschte Wort vorhanden ist und wenn nicht die Zeile mit fgets wegschmeißen?</p>
<p>oder kann ich das Ganze einfacher gestalten?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2257218</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2257218</guid><dc:creator><![CDATA[PDD31]]></dc:creator><pubDate>Fri, 05 Oct 2012 07:27:01 GMT</pubDate></item><item><title><![CDATA[Reply to Konsolenproblem on Fri, 05 Oct 2012 07:28:15 GMT]]></title><description><![CDATA[<p>Kennung der Zeilen <strong>IST</strong> nicht die Zeilenzahl sondern ein Wort.</p>
<p>sorry</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2257219</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2257219</guid><dc:creator><![CDATA[PDD31]]></dc:creator><pubDate>Fri, 05 Oct 2012 07:28:15 GMT</pubDate></item><item><title><![CDATA[Reply to Konsolenproblem on Fri, 05 Oct 2012 07:50:46 GMT]]></title><description><![CDATA[<p>Da würde ich durchaus auch zeilenweise vorgehen und das Wort suchen. Das hier funktioniert, wenn das Suchwort am Anfang vorkommt.</p>
<pre><code class="language-cpp">const string searchedWord = &quot;Gurkensalat&quot;;
string token;
while(stream &gt;&gt; token &amp;&amp; token != searchedWord)
    stream &gt;&gt; skip_line; // skip_line s.o.

if(!stream)
    throw InvalidFileFormat();
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2257231</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2257231</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Fri, 05 Oct 2012 07:50:46 GMT</pubDate></item><item><title><![CDATA[Reply to Konsolenproblem on Fri, 05 Oct 2012 07:59:51 GMT]]></title><description><![CDATA[<p>PDD31 schrieb:</p>
<blockquote>
<p>Ich hab jetzt am Ende der Datei noch ziemlich viel Müll, zwischendrin eine Zeile die ich brauche und ganz am Ende nochmal eine wichtige Zeile.</p>
</blockquote>
<p>Bei Deinem Kenntnisstand ist es vermutlich das Beste, Du bleibst bei der Vorgehensweise aus Deinem ersten Posting.<br />
D.h., Du liest jede Zeile der Datei in einen String ein. Den String kannst Du mit Hilfe der Methoden der String-Klasse untersuchen - zB ob ein bestimmtes Wort drin vorkommt -, außerdem kannst Du ja auch die Zeilen mitzählen, für den Fall zB., dass Dich die ersten x Zeilen auf keinen Fall interessieren.<br />
Zeilen, die für Dich wichtig sind, weil sie zum Beispiel die drölfundzwanzigste Zeile sind, oder weil ein bestimmtes Wort drin vorkommt, verarbeitest Du wie gewünscht, die anderen ignorierst Du einfach.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2257237</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2257237</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Fri, 05 Oct 2012 07:59:51 GMT</pubDate></item><item><title><![CDATA[Reply to Konsolenproblem on Fri, 05 Oct 2012 08:04:12 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/22559">@Eisflamme</a></p>
<p>Danke <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="😃"
    /> und was funktioniert, wenn das Wort nicht am Anfang vorkommt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2257242</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2257242</guid><dc:creator><![CDATA[PDD31]]></dc:creator><pubDate>Fri, 05 Oct 2012 08:04:12 GMT</pubDate></item><item><title><![CDATA[Reply to Konsolenproblem on Fri, 05 Oct 2012 08:20:48 GMT]]></title><description><![CDATA[<p>Nun ja, es gibt da eine Variante mit unget. Aber die ist nicht sicher, weil unget anscheinend nicht sehr sicher ist.</p>
<p>Und dann könnte man sich noch eine Variante denken, bei der man eine Wortsuche einbaut, die aber berücksichtigen müsste, dass ein Teil des Wortes bereits als neues potenzielles Wort dienen könnte. Das wird aber unübersichtlich und dann sollte man das vermutlich auch performant machen, wo ich mich dann aber einlesen müsste.</p>
<p>Hm, ich frage mich gerade, wieso unget() nicht gesichert ist, wenn der filestream auch seekg anbietet. Oder sind das zwei verschiedene Schienen, die man kombinieren könnte, um eine sichere stringInLine-Suche ohne Extracten zu garantieren?</p>
<p>Egal. Einfach und sicher ist:</p>
<pre><code class="language-cpp">const string searchedWord = &quot;Apfelkompott&quot;;
string currentLine;
while(getline(stream, currentLine) &amp;&amp; currentLine.find(searchedWord) == string::npos);

if(!stream)
    throw InvalidFileFormat();

// currentLine ist jetzt die Zeile mit dem aktuellen Suchwort
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2257247</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2257247</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Fri, 05 Oct 2012 08:20:48 GMT</pubDate></item><item><title><![CDATA[Reply to Konsolenproblem on Fri, 05 Oct 2012 08:18:53 GMT]]></title><description><![CDATA[<p>Eisflamme schrieb:</p>
<blockquote>
<p>Einfach und sicher ist:</p>
<pre><code class="language-cpp">const string searchedWord = &quot;Apfelkompott&quot;;
string currentLine;
while(getline(stream, currentLine) &amp;&amp; currentLine.find(searchedWord) == string::npos);

if(!stream)
    throw InvalidFileFormat();

// currentLine ist jetzt die Zeile mit dem aktuellen Suchwort
</code></pre>
</blockquote>
<p>Besser ist</p>
<pre><code class="language-cpp">const string searchedWord = &quot;Apfelkompott&quot;;
string currentLine;
size_t pos;

while(getline(stream, currentLine) &amp;&amp; (pos = currentLine.find(searchedWord)) == string::npos);

if(pos == string::npos)
    throw InvalidFileFormat();
</code></pre>
<p>So hast du auch gleich die Position und musst nicht den Stream nochmal konvertieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2257251</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2257251</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Fri, 05 Oct 2012 08:18:53 GMT</pubDate></item><item><title><![CDATA[Reply to Konsolenproblem on Fri, 05 Oct 2012 08:22:20 GMT]]></title><description><![CDATA[<p>Er hat ja nicht gesagt, ob die Position des Schlüsselworts in der Zeile überhaupt relevant ist. <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="🙂"
    /> Wo müsste man den Stream konvertieren?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2257253</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2257253</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Fri, 05 Oct 2012 08:22:20 GMT</pubDate></item><item><title><![CDATA[Reply to Konsolenproblem on Fri, 05 Oct 2012 08:29:26 GMT]]></title><description><![CDATA[<p>Eisflamme schrieb:</p>
<blockquote>
<p>Er hat ja nicht gesagt, ob die Position des Schlüsselworts in der Zeile überhaupt relevant ist. <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="🙂"
    /> Wo müsste man den Stream konvertieren?</p>
</blockquote>
<p>Zeile 5.<br />
Und ja, du hast Recht, vielleicht braucht er die gar nicht...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2257254</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2257254</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Fri, 05 Oct 2012 08:29:26 GMT</pubDate></item><item><title><![CDATA[Reply to Konsolenproblem on Fri, 05 Oct 2012 08:39:32 GMT]]></title><description><![CDATA[<p>Achso, zu bool konvertieren oder wie?</p>
<p>Jetzt hab ich wieder angefangen zu überlegen: Wenn nur der Text nach dem Wort wichtig ist, kann man sich getline sparen. Ist aber deswegen albern, weil ja bei der Suche nach Socke z.B. &quot;SSSSocke&quot; wieder ungets erfordert. Ich hätte wirklich gerne im Standard definiert, wie häufig unget klappen muss, so fallen streng genommen viele Möglichkeiten weg. <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/2257256</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2257256</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Fri, 05 Oct 2012 08:39:32 GMT</pubDate></item></channel></rss>