<?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[zurücksetzten von ifstream]]></title><description><![CDATA[<p>Hallo,<br />
ich will in meinem Programm aus einer datenbank lesen.<br />
Mit rand() lasse ich mir eine &quot;Stelle&quot; in der datenbank vorgeben. Dann gehe ich solange durch die Database, bis ich an der Stelle bin und gebe diese aus</p>
<pre><code class="language-cpp">string wert;
ifstream lesen;
lesen.open(dateiname.c_str(), ios_base::in);
for(int a=0;a&lt;anzahlDerDatenInDerDatei;++a)
{
  lesen&gt;&gt;wert;
}
lesen.close();
cout&lt;&lt;&quot;Der zufällig ausgewählte wert ist &quot;&lt;&lt;wert;
</code></pre>
<p>Jetzt möchte ich mehrmals einen zufallswert aus der datenbank auswählen (im beispiel 30 mal)</p>
<pre><code class="language-cpp">string wert;
ifstream lesen;
lesen.open(dateiname.c_str(), ios_base::in);
if(int b=0;b&lt;30;++b)
{
   for(int a=1;a&lt;=zufaelligGeweahlterWert;++a)
   {
     lesen&gt;&gt;wert;
   }
cout&lt;&lt;&quot;Der zufällig ausgewählte wert ist &quot;&lt;&lt;wert;
}
lesen.close();
</code></pre>
<p>Das Problem hierbei ist, dass das Programm von der letzten gelesenen Stelle weiter macht.<br />
Wenn jetzt zufällig die Position 6 ausgewählt wird, wir mir auch der 6. Wert der Datei ausgegeben. Wenn die nächste Zufallszahl 4 ist, wird mir nicht der 4., sondern der 10. Wert ausgegeben.</p>
<p>Weis jemand wie man dieses lesen&gt;&gt;wert auf die startposition zurück setzten kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/225049/zurücksetzten-von-ifstream</link><generator>RSS for Node</generator><lastBuildDate>Thu, 01 Oct 2026 20:28:44 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/225049.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 18 Oct 2008 16:05:53 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to zurücksetzten von ifstream on Sat, 18 Oct 2008 16:05:53 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich will in meinem Programm aus einer datenbank lesen.<br />
Mit rand() lasse ich mir eine &quot;Stelle&quot; in der datenbank vorgeben. Dann gehe ich solange durch die Database, bis ich an der Stelle bin und gebe diese aus</p>
<pre><code class="language-cpp">string wert;
ifstream lesen;
lesen.open(dateiname.c_str(), ios_base::in);
for(int a=0;a&lt;anzahlDerDatenInDerDatei;++a)
{
  lesen&gt;&gt;wert;
}
lesen.close();
cout&lt;&lt;&quot;Der zufällig ausgewählte wert ist &quot;&lt;&lt;wert;
</code></pre>
<p>Jetzt möchte ich mehrmals einen zufallswert aus der datenbank auswählen (im beispiel 30 mal)</p>
<pre><code class="language-cpp">string wert;
ifstream lesen;
lesen.open(dateiname.c_str(), ios_base::in);
if(int b=0;b&lt;30;++b)
{
   for(int a=1;a&lt;=zufaelligGeweahlterWert;++a)
   {
     lesen&gt;&gt;wert;
   }
cout&lt;&lt;&quot;Der zufällig ausgewählte wert ist &quot;&lt;&lt;wert;
}
lesen.close();
</code></pre>
<p>Das Problem hierbei ist, dass das Programm von der letzten gelesenen Stelle weiter macht.<br />
Wenn jetzt zufällig die Position 6 ausgewählt wird, wir mir auch der 6. Wert der Datei ausgegeben. Wenn die nächste Zufallszahl 4 ist, wird mir nicht der 4., sondern der 10. Wert ausgegeben.</p>
<p>Weis jemand wie man dieses lesen&gt;&gt;wert auf die startposition zurück setzten kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1600873</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1600873</guid><dc:creator><![CDATA[g3bk47]]></dc:creator><pubDate>Sat, 18 Oct 2008 16:05:53 GMT</pubDate></item><item><title><![CDATA[Reply to zurücksetzten von ifstream on Sat, 18 Oct 2008 16:44:59 GMT]]></title><description><![CDATA[<p><a href="http://www.cplusplus.com/reference/iostream/istream/seekg.html" rel="nofollow">http://www.cplusplus.com/reference/iostream/istream/seekg.html</a></p>
<p>Schau dir allgemein in Zukunft die Referenz für sowas an <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>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1600883</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1600883</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Sat, 18 Oct 2008 16:44:59 GMT</pubDate></item><item><title><![CDATA[Reply to zurücksetzten von ifstream on Sat, 18 Oct 2008 17:44:37 GMT]]></title><description><![CDATA[<p>ich habe jetzt seekg in meinem code verwendet, trotzdem habe ich noch ein problem</p>
<p>Mein code bisher:</p>
<pre><code class="language-cpp">srand( time(NULL) );
int cardnumber;
string cardname;
ifstream lesen;
lesen.open(dateiname.c_str(), ios_base::in);

for(int a=1;a&lt;=35;++a) // soll 35 werte zufällig aus der datei ausgeben
{
   lesen.seekg (ios::beg); //pointer an den anfang der datei setzten

   cardnumber =((20000 +rand()) % anzahlElemente) +1; // zufallszahl zwischen 1 und der anzahl aller werte in der datei erzeugen

   for(int b=1;b&lt;=cardnumber;++b) //liest so lange werte ein, bis er an der stelle ist, die durch rand() erzeugt wurde
   {
      lesen&gt;&gt;cardname;
   }

cout&lt;&lt;&quot;Karte: &quot;&lt;&lt;cardname&lt;&lt;&quot; | ID: &quot;&lt;&lt;cardnumber; //ausgeben des Wertes an der durch rand() vorgegebenen Stelle
}
lesen.close();
</code></pre>
<p>Das klappt auch soweit ganz gut. Nur sobald cardnumber einmal den Wert des letzten Elements der Datei annimmt, wird nur noch dieses elemt ausgegeben.<br />
Das heißt beim Ausführen des Programms erhalte ich zum Beispiel eine solche ausgabe (inhalt der Datei: Karte1, Karte2, ..., Karte7)</p>
<pre><code>Karte: karte1 | ID: 1
Karte: karte3 | ID: 3
Karte: karte2 | ID: 2
Karte: karte6 | ID: 6
Karte: karte6 | ID: 6
Karte: karte4 | ID: 4
Karte: karte7 | ID: 7
[b]Karte: karte7 | ID: 3
Karte: karte7 | ID: 5
Karte: karte7 | ID: 1
Karte: karte7 | ID: 3
Karte: karte7 | ID: 2
Karte: karte7 | ID: 4[/b]
</code></pre>
<p>Weis jemand, woran das liegen könnte?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1600912</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1600912</guid><dc:creator><![CDATA[g3bk47]]></dc:creator><pubDate>Sat, 18 Oct 2008 17:44:37 GMT</pubDate></item><item><title><![CDATA[Reply to zurücksetzten von ifstream on Sun, 19 Oct 2008 16:33:23 GMT]]></title><description><![CDATA[<p>Du hast dann über das Ende der Datei hinausgelesen und dann wird das Fehlerflag gesetzt, welches solange Bestand hat bis man das Flag wieder von Hand löscht:</p>
<pre><code class="language-cpp">lesen.clear(); // setzt alle Flags zurück - löscht aber KEINE Daten!
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1601329</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1601329</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Sun, 19 Oct 2008 16:33:23 GMT</pubDate></item></channel></rss>