<?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[ifstream liest zu viel aus ?]]></title><description><![CDATA[<p>Hallo</p>
<p>Ich schreibe gerade ein Adressbuch.</p>
<p>Ich habe in meinen Konstruktor eingebaut dass er beim initialisieren die Daten<br />
aus der txt Datei ausliest und sie in ein vector speichert.</p>
<pre><code class="language-cpp">Address::Address()
{
	char buffer[bufferSize];
	std::ifstream iaddresstxt;
	iaddresstxt.open(&quot;address.txt&quot;);

	if(!iaddresstxt)
	{
		std::ofstream oaddresstxt;
		oaddresstxt.open(&quot;address.txt&quot;);
		oaddresstxt.close();
	}

	else
	{
		do
		{
			iaddresstxt.getline(buffer, bufferSize);	firstName.push_back(buffer);	buffer[0] = '\0';
			iaddresstxt.getline(buffer, bufferSize);	lastName.push_back(buffer);		buffer[0] = '\0';
			iaddresstxt.getline(buffer, bufferSize);	dateOfBirth.push_back(buffer);	buffer[0] = '\0';
			iaddresstxt.getline(buffer, bufferSize);	phoneNumber.push_back(buffer);	buffer[0] = '\0';
			iaddresstxt.getline(buffer, bufferSize);	address.push_back(buffer);		buffer[0] = '\0';
			iaddresstxt.getline(buffer, bufferSize);	location.push_back(buffer);		buffer[0] = '\0';
		}while(!iaddresstxt.eof());
	}
	iaddresstxt.close();
}
</code></pre>
<p>wen ich dass Programm dann neu starte hat er meine Daten und ein zweiten mit leeren strings <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>
<p>was mach ich falsch ?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/284180/ifstream-liest-zu-viel-aus</link><generator>RSS for Node</generator><lastBuildDate>Sat, 22 Aug 2026 05:45:04 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/284180.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 27 Mar 2011 13:03:49 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to ifstream liest zu viel aus ? on Sun, 27 Mar 2011 13:03:49 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Ich schreibe gerade ein Adressbuch.</p>
<p>Ich habe in meinen Konstruktor eingebaut dass er beim initialisieren die Daten<br />
aus der txt Datei ausliest und sie in ein vector speichert.</p>
<pre><code class="language-cpp">Address::Address()
{
	char buffer[bufferSize];
	std::ifstream iaddresstxt;
	iaddresstxt.open(&quot;address.txt&quot;);

	if(!iaddresstxt)
	{
		std::ofstream oaddresstxt;
		oaddresstxt.open(&quot;address.txt&quot;);
		oaddresstxt.close();
	}

	else
	{
		do
		{
			iaddresstxt.getline(buffer, bufferSize);	firstName.push_back(buffer);	buffer[0] = '\0';
			iaddresstxt.getline(buffer, bufferSize);	lastName.push_back(buffer);		buffer[0] = '\0';
			iaddresstxt.getline(buffer, bufferSize);	dateOfBirth.push_back(buffer);	buffer[0] = '\0';
			iaddresstxt.getline(buffer, bufferSize);	phoneNumber.push_back(buffer);	buffer[0] = '\0';
			iaddresstxt.getline(buffer, bufferSize);	address.push_back(buffer);		buffer[0] = '\0';
			iaddresstxt.getline(buffer, bufferSize);	location.push_back(buffer);		buffer[0] = '\0';
		}while(!iaddresstxt.eof());
	}
	iaddresstxt.close();
}
</code></pre>
<p>wen ich dass Programm dann neu starte hat er meine Daten und ein zweiten mit leeren strings <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>
<p>was mach ich falsch ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2040820</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2040820</guid><dc:creator><![CDATA[0546345345]]></dc:creator><pubDate>Sun, 27 Mar 2011 13:03:49 GMT</pubDate></item><item><title><![CDATA[Reply to ifstream liest zu viel aus ? on Sun, 27 Mar 2011 13:06:44 GMT]]></title><description><![CDATA[<p>der ist am ende der letztem readline() noch nicht im eof state, das passiert erst wenn er einmal drübergelesen hat, da ist er dann schon am Anfan deiner do {\ while () und daher haste 2 Datensätze.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2040823</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2040823</guid><dc:creator><![CDATA[padreigh]]></dc:creator><pubDate>Sun, 27 Mar 2011 13:06:44 GMT</pubDate></item><item><title><![CDATA[Reply to ifstream liest zu viel aus ? on Sun, 27 Mar 2011 13:09:22 GMT]]></title><description><![CDATA[<p>Als Tipp könntest du in deinem Programm RAII verwenden.</p>
<pre><code class="language-cpp">std::ifstream iaddresstxt;
iaddresstxt.open(&quot;address.txt&quot;);
</code></pre>
<p>wird zu</p>
<pre><code class="language-cpp">std::ifstream iaddresstxt(&quot;address.txt&quot;);
</code></pre>
<p>Dito für das ofstream. Und .close() musst du nicht aufrufen, da die filestreams beim Scopeende automatisch geschlossen werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2040827</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2040827</guid><dc:creator><![CDATA[HighLigerBiMBam]]></dc:creator><pubDate>Sun, 27 Mar 2011 13:09:22 GMT</pubDate></item><item><title><![CDATA[Reply to ifstream liest zu viel aus ? on Sun, 27 Mar 2011 13:10:40 GMT]]></title><description><![CDATA[<p>Sorry, Offtopic.<br />
Aber mach doch eine Funktion namens <code>Load</code> die einen <code>std::string</code> als Parameter verlangt. Mach, meiner Meinung nach, mehr Sinn als im Ctor.</p>
<p>MfG, EOutOfResources</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2040828</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2040828</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Sun, 27 Mar 2011 13:10:40 GMT</pubDate></item><item><title><![CDATA[Reply to ifstream liest zu viel aus ? on Sun, 27 Mar 2011 13:55:43 GMT]]></title><description><![CDATA[<p>Und wie mache ich dass jetzt das er danach in den eof status kommt ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2040858</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2040858</guid><dc:creator><![CDATA[0546345345]]></dc:creator><pubDate>Sun, 27 Mar 2011 13:55:43 GMT</pubDate></item><item><title><![CDATA[Reply to ifstream liest zu viel aus ? on Sun, 27 Mar 2011 14:43:46 GMT]]></title><description><![CDATA[<p>Vorsicht bei Leerzeichen musst du es anders machen <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>Edit: Um Savefunktion erweitert.</p>
<p>Quellcode:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;string&gt;
#include &lt;vector&gt;

class Person
{
private:
	std::string name;
	std::string vorname;
	std::string geburtstag;
	std::string telefonnummer;
	std::string adresse;
	std::string ort;

public:
	friend std::ostream&amp; operator &lt;&lt; (std::ostream&amp; out, const Person&amp; pers);
	friend std::istream&amp; operator &gt;&gt; (std::istream&amp; in, Person&amp; pers);
};

std::ostream&amp; operator &lt;&lt; (std::ostream&amp; out, const Person&amp; pers)
{
	out &lt;&lt; pers.name &lt;&lt; &quot;\n&quot;
		&lt;&lt; pers.vorname &lt;&lt; &quot;\n&quot;
		&lt;&lt; pers.geburtstag &lt;&lt; &quot;\n&quot;
		&lt;&lt; pers.telefonnummer &lt;&lt; &quot;\n&quot;
		&lt;&lt; pers.adresse &lt;&lt; &quot;\n&quot;
		&lt;&lt; pers.ort &lt;&lt; &quot;\n&quot;;
	return out;
}

std::istream&amp; operator &gt;&gt; (std::istream&amp; in, Person &amp;pers)
{
	in  &gt;&gt; pers.name
		&gt;&gt; pers.vorname
		&gt;&gt; pers.geburtstag
		&gt;&gt; pers.telefonnummer
		&gt;&gt; pers.adresse
		&gt;&gt; pers.ort;

	return in;
}

class Adressen
{
private:
	std::vector&lt;Person&gt; vecAdressen;

public:
	bool Load(std::string datei);
	bool Save(std::string datei);
	friend std::ostream&amp; operator &lt;&lt; (std::ostream&amp; out, const Adressen&amp; adr);
};

bool Adressen::Load(std::string datei)
{
	std::ifstream in(datei);
	if(!in) return false;

	while (!in.eof())
	{
		Person pers;
		in &gt;&gt; pers;

		vecAdressen.push_back(pers);
	}

	return true;
}

bool Adressen::Save(std::string datei)
{
	std::ofstream out(datei);
	if(!out) return false;

	for(std::vector&lt;Person&gt;::const_iterator i = vecAdressen.begin(); i != vecAdressen.end(); ++i)
		out &lt;&lt; *i;

	return true;
}

std::ostream&amp; operator &lt;&lt; (std::ostream&amp; out, const Adressen&amp; adr)
{
	for(std::vector&lt;Person&gt;::const_iterator i = adr.vecAdressen.begin(); i != adr.vecAdressen.end(); ++i)
		out &lt;&lt; *i &lt;&lt; &quot;\n&quot;;
	return out;
}

int main()
{
	Adressen adr;
	if(adr.Load(&quot;test.txt&quot;))
		std::cout &lt;&lt; adr;

	adr.Save(&quot;test_save.txt&quot;);
}
</code></pre>
<p>Testdatei:</p>
<pre><code class="language-cpp">Mustermann
Max
12.07.2010
0123/456789
Hauptstr.777
Berlin
Musterfrau
Maria
20.12.2008
0110/456789
Hauptstr.2
Muenchen
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2040870</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2040870</guid><dc:creator><![CDATA[HighLigerBiMBam]]></dc:creator><pubDate>Sun, 27 Mar 2011 14:43:46 GMT</pubDate></item><item><title><![CDATA[Reply to ifstream liest zu viel aus ? on Sun, 27 Mar 2011 16:08:02 GMT]]></title><description><![CDATA[<p>Vielen Dank an alle <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/2040894</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2040894</guid><dc:creator><![CDATA[0546345345]]></dc:creator><pubDate>Sun, 27 Mar 2011 16:08:02 GMT</pubDate></item></channel></rss>