<?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[Zwei Dateien zeilenweise einlesen]]></title><description><![CDATA[<p>Ich versuche zwei Dateien Zeilenweise auszulesen...<br />
Inhalt der Dateien...:<br />
*<br />
Vornamen.txt*<br />
Peter<br />
Dieter</p>
<p><em>Nachnamen.txt</em><br />
Schmidt<br />
Bauer</p>
<p>Ich öffne beide Dateien mit fstream im ios::in Modus.<br />
So lese ich die Dateien aus...:</p>
<pre><code class="language-cpp">while(std::getline(vornamen, vname))
{
	while(std::getline(nachnamen, nname))
	{
		std::cout  &lt;&lt; vname &lt;&lt; &quot; &quot; &lt;&lt; nname &lt;&lt; std::endl;
	}
}
</code></pre>
<p>Ausgegeben wird mir:<br />
Peter Schmidt<br />
Peter Bauer</p>
<p>Ich möchte aber das mir ausgegeben wird:<br />
Peter Schmidt<br />
Peter Bauer<br />
Dieter Schmidt<br />
Dieter Bauer</p>
<p>Wenn ich das ganze im Debugger verfolge durchläuft er sogar Dieter und dann die Nachnamen, ausgegeben wird es mir komischerweise nicht?! Was mache ich falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/310131/zwei-dateien-zeilenweise-einlesen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 05 Aug 2026 02:34:25 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/310131.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 04 Nov 2012 16:02:29 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zwei Dateien zeilenweise einlesen on Sun, 04 Nov 2012 16:02:29 GMT]]></title><description><![CDATA[<p>Ich versuche zwei Dateien Zeilenweise auszulesen...<br />
Inhalt der Dateien...:<br />
*<br />
Vornamen.txt*<br />
Peter<br />
Dieter</p>
<p><em>Nachnamen.txt</em><br />
Schmidt<br />
Bauer</p>
<p>Ich öffne beide Dateien mit fstream im ios::in Modus.<br />
So lese ich die Dateien aus...:</p>
<pre><code class="language-cpp">while(std::getline(vornamen, vname))
{
	while(std::getline(nachnamen, nname))
	{
		std::cout  &lt;&lt; vname &lt;&lt; &quot; &quot; &lt;&lt; nname &lt;&lt; std::endl;
	}
}
</code></pre>
<p>Ausgegeben wird mir:<br />
Peter Schmidt<br />
Peter Bauer</p>
<p>Ich möchte aber das mir ausgegeben wird:<br />
Peter Schmidt<br />
Peter Bauer<br />
Dieter Schmidt<br />
Dieter Bauer</p>
<p>Wenn ich das ganze im Debugger verfolge durchläuft er sogar Dieter und dann die Nachnamen, ausgegeben wird es mir komischerweise nicht?! Was mache ich falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2267254</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2267254</guid><dc:creator><![CDATA[glanfaenger]]></dc:creator><pubDate>Sun, 04 Nov 2012 16:02:29 GMT</pubDate></item><item><title><![CDATA[Reply to Zwei Dateien zeilenweise einlesen on Sun, 04 Nov 2012 16:07:51 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">while(std::getline(vornamen, vname) &amp;&amp; std::getline(nachnamen, nname))
    std::cout &lt;&lt; vname &lt;&lt; &quot; &quot; &lt;&lt; nname &lt;&lt; '\n';
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2267256</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2267256</guid><dc:creator><![CDATA[Kellerautomat]]></dc:creator><pubDate>Sun, 04 Nov 2012 16:07:51 GMT</pubDate></item><item><title><![CDATA[Reply to Zwei Dateien zeilenweise einlesen on Sun, 04 Nov 2012 16:11:19 GMT]]></title><description><![CDATA[<p>Du liest falsch.<br />
NAch dem ersten Schleifendurchgang ist der Dateizeiger von <code>vornamen</code> (komischer Name für einen Filestream, oder?) am Ende, d. h. <code>vornamen.eof() == true</code> und deswegen wird die innere Schleife kein zweites mal durchlaufen (weil der Cast zu <code>bool</code> ein <code>false</code> liefert).</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/28420">@Kellerautomat</a>: Du hast nicht verstanden was er will.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2267258</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2267258</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Sun, 04 Nov 2012 16:11:19 GMT</pubDate></item><item><title><![CDATA[Reply to Zwei Dateien zeilenweise einlesen on Sun, 04 Nov 2012 16:12:22 GMT]]></title><description><![CDATA[<p>Dann gibt er mir aber nur<br />
<em>Peter Schmidt<br />
Dieter Bauer</em><br />
aus. Ich möchte aber das jeder Vorname mit jedem Nachnamen ausgegeben wird. Deswegen habe ich auch zwei while-Schleifen genommen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2267260</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2267260</guid><dc:creator><![CDATA[glanfaenger]]></dc:creator><pubDate>Sun, 04 Nov 2012 16:12:22 GMT</pubDate></item><item><title><![CDATA[Reply to Zwei Dateien zeilenweise einlesen on Sun, 04 Nov 2012 16:12:46 GMT]]></title><description><![CDATA[<p>@glanfaenger: Du musst die Datei mehrmals öffnen.</p>
<pre><code class="language-cpp">std::fstream vornamen(&quot;vornamen.txt&quot;);
  for (std::string vorname; std::getline(vornamen, vorname);) {
    std::fstream nachnamen(&quot;nachnamen.txt&quot;);
    for (std::string nachname; std::getline(nachnamen, nachname);)
      std::cout &lt;&lt; vorname &lt;&lt; ' ' &lt;&lt; nachname &lt;&lt; '\n';
  }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2267262</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2267262</guid><dc:creator><![CDATA[szmadfa]]></dc:creator><pubDate>Sun, 04 Nov 2012 16:12:46 GMT</pubDate></item><item><title><![CDATA[Reply to Zwei Dateien zeilenweise einlesen on Sun, 04 Nov 2012 16:16:17 GMT]]></title><description><![CDATA[<p>... oder die Leseposition mit <code>nachnamen.seekg( 0, ios::beg );</code> wieder an den Anfang setzen.</p>
<p>Effizienter:</p>
<pre><code class="language-cpp">#include &lt;vector&gt;
#include &lt;string&gt;
#include &lt;sstream&gt;
#include &lt;iostream&gt;

int main()
{
	std::stringstream vornamen( &quot;Peter\nDieter\n&quot; ); // bei dir fstream
	std::stringstream nachnamen( &quot;Schmidt\nBauer\n&quot; ); // bei dir fstream

	std::vector&lt; std::string &gt; nachnamen_vec;
	std::string name;
	while( std::getline( nachnamen, name ) )
		nachnamen_vec.push_back( name );

	while( std::getline(vornamen, name ) ) {

		for( auto it = nachnamen_vec.begin(); it != nachnamen_vec.end(); ++it ) {

			std::cout &lt;&lt; name &lt;&lt; &quot; &quot; &lt;&lt; *it &lt;&lt; &quot;\n&quot;;
		}
	}	
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2267265</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2267265</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Sun, 04 Nov 2012 16:16:17 GMT</pubDate></item><item><title><![CDATA[Reply to Zwei Dateien zeilenweise einlesen on Sun, 04 Nov 2012 16:23:41 GMT]]></title><description><![CDATA[<p>Das ist alles Blödsinn (Edit: Swordfishs Lösung natürlich nicht). Erstmal braucht er einen <code>ifstream</code> . Zweitens sollte er die Nachnamen zuerst in ein Array einlesen.</p>
<p>Das wäre eine Möglichkeit:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;vector&gt;
#include &lt;iterator&gt;
#include &lt;string&gt;
#include &lt;fstream&gt;

int main()
{
        std::ifstream name_file(&quot;vornamen.txt&quot;),
                      surname_file(&quot;nachnamen.txt&quot;);

        std::vector&lt;std::string&gt; surnames{std::istream_iterator&lt;std::string&gt;(surname_file),
                                          std::istream_iterator&lt;std::string&gt;()};

        for(std::string str;std::getline(name_file, str);)
            for(size_t i = 0;i != surnames.size();++i)
                std::cout &lt;&lt; str &lt;&lt; ' ' &lt;&lt; surnames[i] &lt;&lt; '\n';
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2267266</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2267266</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Sun, 04 Nov 2012 16:23:41 GMT</pubDate></item><item><title><![CDATA[Reply to Zwei Dateien zeilenweise einlesen on Sun, 04 Nov 2012 16:20:24 GMT]]></title><description><![CDATA[<p>Wenn jemand &quot;zu Guttenberg&quot; heisst, stimmt die Lösung von Sone schon nicht mehr.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2267268</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2267268</guid><dc:creator><![CDATA[gutti]]></dc:creator><pubDate>Sun, 04 Nov 2012 16:20:24 GMT</pubDate></item><item><title><![CDATA[Reply to Zwei Dateien zeilenweise einlesen on Sun, 04 Nov 2012 16:21:03 GMT]]></title><description><![CDATA[<p>Danke für eure Hilfe, aber warum sollte ich denn die Namen erst in einen Vektor packen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2267269</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2267269</guid><dc:creator><![CDATA[glanfaenger]]></dc:creator><pubDate>Sun, 04 Nov 2012 16:21:03 GMT</pubDate></item><item><title><![CDATA[Reply to Zwei Dateien zeilenweise einlesen on Sun, 04 Nov 2012 16:23:14 GMT]]></title><description><![CDATA[<p>glanfaenger schrieb:</p>
<blockquote>
<p>Danke für eure Hilfe, aber warum sollte ich denn die Namen erst in einen Vektor packen?</p>
</blockquote>
<p>Weil es sau ineffizient ist die Datei nochmal und nochmal und nochmal zu durchlaufen. Da ist ein Array viel effizienter.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2267271</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2267271</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Sun, 04 Nov 2012 16:23:14 GMT</pubDate></item><item><title><![CDATA[Reply to Zwei Dateien zeilenweise einlesen on Sun, 04 Nov 2012 16:26:24 GMT]]></title><description><![CDATA[<p>Ok stimmt wohl, aber wenn eine Datei ca. 10.000 Zeilen hat, belastet das nicht ganz schön das Programm? Ich mein die Zeilen befinden sich ja dann alle im Speicher.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2267273</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2267273</guid><dc:creator><![CDATA[glanfaenger]]></dc:creator><pubDate>Sun, 04 Nov 2012 16:26:24 GMT</pubDate></item><item><title><![CDATA[Reply to Zwei Dateien zeilenweise einlesen on Sun, 04 Nov 2012 16:27:56 GMT]]></title><description><![CDATA[<p>glanfaenger schrieb:</p>
<blockquote>
<p>Ok stimmt wohl, aber wenn eine Datei ca. 10.000 Zeilen hat, belastet das nicht ganz schön das Programm? Ich mein die Zeilen befinden sich ja dann alle im Speicher.</p>
</blockquote>
<p>Äh... Ja und? Ein heutiger PC hat locker 4 GB Speicher, da fallen ~100 kB nicht so auf... <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/2267276</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2267276</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Sun, 04 Nov 2012 16:27:56 GMT</pubDate></item><item><title><![CDATA[Reply to Zwei Dateien zeilenweise einlesen on Sun, 04 Nov 2012 16:29:57 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<p>Erstmal braucht er einen <code>ifstream</code> .</p>
</blockquote>
<p>Warum?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2267278</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2267278</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Sun, 04 Nov 2012 16:29:57 GMT</pubDate></item><item><title><![CDATA[Reply to Zwei Dateien zeilenweise einlesen on Sun, 04 Nov 2012 16:32:11 GMT]]></title><description><![CDATA[<p>Swordfish schrieb:</p>
<blockquote>
<p>Sone schrieb:</p>
<blockquote>
<p>Erstmal braucht er einen <code>ifstream</code> .</p>
</blockquote>
<p>Warum?</p>
</blockquote>
<p>Nein, natürlich ist es kein <strong>muss</strong>.<br />
Es macht aber hier überhaupt keinen Sinn einen <code>fstream</code> zu nehmen, wo er nur lesen will.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2267279</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2267279</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Sun, 04 Nov 2012 16:32:11 GMT</pubDate></item><item><title><![CDATA[Reply to Zwei Dateien zeilenweise einlesen on Sun, 04 Nov 2012 17:44:12 GMT]]></title><description><![CDATA[<p>warum?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2267308</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2267308</guid><dc:creator><![CDATA[warumdennnur]]></dc:creator><pubDate>Sun, 04 Nov 2012 17:44:12 GMT</pubDate></item><item><title><![CDATA[Reply to Zwei Dateien zeilenweise einlesen on Sun, 04 Nov 2012 17:47:59 GMT]]></title><description><![CDATA[<p>warumdennnur schrieb:</p>
<blockquote>
<p>warum?</p>
</blockquote>
<p>Warum? Weil es schlechter Stil ist.<br />
Wenn man einen <code>fstream</code> nimmt suggeriert man, dass man durch diesen Stream lesen und schreiben möchte.<br />
Außerdem kann ein <code>fstream</code> ohne entsprechendes Flag die Datei auch ungewollt erzeugen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2267314</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2267314</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Sun, 04 Nov 2012 17:47:59 GMT</pubDate></item><item><title><![CDATA[Reply to Zwei Dateien zeilenweise einlesen on Sun, 04 Nov 2012 18:17:29 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<p>Außerdem kann ein <code>fstream</code> ohne entsprechendes Flag die Datei auch ungewollt erzeugen.</p>
</blockquote>
<p>Wann genau legt denn der c-tor von <code>fstream</code> eine Datei an?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2267330</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2267330</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Sun, 04 Nov 2012 18:17:29 GMT</pubDate></item><item><title><![CDATA[Reply to Zwei Dateien zeilenweise einlesen on Sun, 04 Nov 2012 18:54:23 GMT]]></title><description><![CDATA[<p>Swordfish schrieb:</p>
<blockquote>
<p>Sone schrieb:</p>
<blockquote>
<p>Außerdem kann ein <code>fstream</code> ohne entsprechendes Flag die Datei auch ungewollt erzeugen.</p>
</blockquote>
<p>Wann genau legt denn der c-tor von <code>fstream</code> eine Datei an?</p>
</blockquote>
<p>Wenn keine mit entsprechendem Namen vorhanden ist und du das <code>out</code> Flag (implizit oder explizit) mit angibst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2267347</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2267347</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Sun, 04 Nov 2012 18:54:23 GMT</pubDate></item><item><title><![CDATA[Reply to Zwei Dateien zeilenweise einlesen on Sun, 04 Nov 2012 19:01:30 GMT]]></title><description><![CDATA[<p>Oh man... das darf doch einfach nicht wahr sein...<br />
Natürlich darf das <code>in</code> Flag nicht angegeben sein <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="😃"
    /> sry</p>
<p>Damit entfällt mein Argument Nr. 2. Aber 1 gilt noch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2267351</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2267351</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Sun, 04 Nov 2012 19:01:30 GMT</pubDate></item></channel></rss>