<?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.... hab mir das laden grad irgendwie zerschossen]]></title><description><![CDATA[<p>Halli Hallo...<br />
schreib grad nen programm und naja...das laden hat eeeben noch funktioniert...bis ich einiges umgändert habe...und ich finde den fehler einfach nicht!!</p>
<p>vielleicht findet den einer von euch</p>
<p>also wenn ich laden mache kommt ne windows meldung:</p>
<p>die anweisung in 0x0043d8bd verweist auf speicher bla bla bla...der vorgang written konnte nicht im speicher durchgeführt werden xD</p>
<p>also was is hier falsch...für mich sieht es richtig aus</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;conio.h&gt;
#include &lt;windows.h&gt;
#include &lt;string.h&gt;

using namespace std;

struct Werte 
{    char plz[6];
     char ort[40];
};

class Ort
{     private: Werte *inhalt;
               int Anzahlorte;
               char dateiname[30];
               ifstream load_file;
               ofstream save_file;
      public:  Ort(char[]);
               ~Ort(){};
               void laden();
               void anzeigen();
               void o_suchen();
               void p_suchen();
               void speichern();
               void sortieren();
               void ende();
};

Ort::Ort(char neuername[])
{
     strcpy(dateiname, neuername);      
}

void Ort::laden()
{
    ifstream load_file(&quot;plz.txt&quot;);
     int Anzahl=0;

     if (load_file.good() )
     { cout&lt;&lt;&quot;Ihre Daten werden eingelesen&quot;&lt;&lt;endl;
       while (!load_file.eof() )
       {
       load_file&gt;&gt;inhalt[Anzahl].plz;
       load_file&gt;&gt;inhalt[Anzahl].ort;

       Anzahlorte = Anzahl;
       Anzahl++;
       }

       cout&lt;&lt;Anzahlorte&lt;&lt;&quot; Daten wurden geladen&quot;&lt;&lt;endl;
     }
     else
     { cout&lt;&lt;&quot;Daten konnten nicht geladen werden&quot;&lt;&lt;endl;
     }

}

void Ort::anzeigen()
{
     for (int i=0; i&lt;=(Anzahlorte-1); i++)
         {
              cout&lt;&lt;inhalt[i].plz&lt;&lt;&quot;   &quot;;
              cout&lt;&lt;inhalt[i].ort&lt;&lt;endl;
         }         
}

void Ort::sortieren()
{    Werte a;
     int kk;

     do
     {kk=1;

       for (int i=0; i&lt;=Anzahlorte-1; i++)
       {

           if(inhalt[i].ort&lt;inhalt[i+1].ort)
           { a=inhalt[i];
             inhalt[i]=inhalt[i+1];
             inhalt[i+1]=a;
             kk=0;
           }
       }
     }while(kk=0);
}

void Ort::speichern()
{  save_file.open(&quot;plz.txt&quot;);
   for (int i=0; i&lt;=Anzahlorte-1; i++)
   {   save_file&lt;&lt;inhalt[i].plz&lt;&lt;inhalt[i].ort&lt;&lt;'\n';
   }  
   save_file.close();
   cout&lt;&lt;&quot;Ihre Daten wurden gespeichert!&quot;&lt;&lt;endl;
}
main()
{

int wahl=0;

Ort test(&quot;plz.txt&quot;);

do
{   cout&lt;&lt;&quot;Bitte waehlen Sie aus&quot;&lt;&lt;endl;
    cout&lt;&lt;&quot;1. laden&quot;&lt;&lt;endl;
    cout&lt;&lt;&quot;2. anzeigen&quot;&lt;&lt;endl;
    cout&lt;&lt;&quot;3. sortieren&quot;&lt;&lt;endl;
    cout&lt;&lt;&quot;4. speichern&quot;&lt;&lt;endl;
    cin&gt;&gt;wahl;

    switch(wahl)
    {           case 1: test.laden();
                break;
                case 2: test.anzeigen();
                break;
                case 3: test.sortieren();
                break;
                case 4: test.speichern();
                break;
                case 0:
                break;
                default: cout&lt;&lt;&quot;\n--------Falsche Eingabe------------&quot;;
                break;
    }
}
while(wahl!=0);

getch();

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/284885/ifstream-hab-mir-das-laden-grad-irgendwie-zerschossen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 21 Aug 2026 18:20:14 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/284885.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 10 Apr 2011 14:49:10 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to ifstream.... hab mir das laden grad irgendwie zerschossen on Sun, 10 Apr 2011 14:49:10 GMT]]></title><description><![CDATA[<p>Halli Hallo...<br />
schreib grad nen programm und naja...das laden hat eeeben noch funktioniert...bis ich einiges umgändert habe...und ich finde den fehler einfach nicht!!</p>
<p>vielleicht findet den einer von euch</p>
<p>also wenn ich laden mache kommt ne windows meldung:</p>
<p>die anweisung in 0x0043d8bd verweist auf speicher bla bla bla...der vorgang written konnte nicht im speicher durchgeführt werden xD</p>
<p>also was is hier falsch...für mich sieht es richtig aus</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;conio.h&gt;
#include &lt;windows.h&gt;
#include &lt;string.h&gt;

using namespace std;

struct Werte 
{    char plz[6];
     char ort[40];
};

class Ort
{     private: Werte *inhalt;
               int Anzahlorte;
               char dateiname[30];
               ifstream load_file;
               ofstream save_file;
      public:  Ort(char[]);
               ~Ort(){};
               void laden();
               void anzeigen();
               void o_suchen();
               void p_suchen();
               void speichern();
               void sortieren();
               void ende();
};

Ort::Ort(char neuername[])
{
     strcpy(dateiname, neuername);      
}

void Ort::laden()
{
    ifstream load_file(&quot;plz.txt&quot;);
     int Anzahl=0;

     if (load_file.good() )
     { cout&lt;&lt;&quot;Ihre Daten werden eingelesen&quot;&lt;&lt;endl;
       while (!load_file.eof() )
       {
       load_file&gt;&gt;inhalt[Anzahl].plz;
       load_file&gt;&gt;inhalt[Anzahl].ort;

       Anzahlorte = Anzahl;
       Anzahl++;
       }

       cout&lt;&lt;Anzahlorte&lt;&lt;&quot; Daten wurden geladen&quot;&lt;&lt;endl;
     }
     else
     { cout&lt;&lt;&quot;Daten konnten nicht geladen werden&quot;&lt;&lt;endl;
     }

}

void Ort::anzeigen()
{
     for (int i=0; i&lt;=(Anzahlorte-1); i++)
         {
              cout&lt;&lt;inhalt[i].plz&lt;&lt;&quot;   &quot;;
              cout&lt;&lt;inhalt[i].ort&lt;&lt;endl;
         }         
}

void Ort::sortieren()
{    Werte a;
     int kk;

     do
     {kk=1;

       for (int i=0; i&lt;=Anzahlorte-1; i++)
       {

           if(inhalt[i].ort&lt;inhalt[i+1].ort)
           { a=inhalt[i];
             inhalt[i]=inhalt[i+1];
             inhalt[i+1]=a;
             kk=0;
           }
       }
     }while(kk=0);
}

void Ort::speichern()
{  save_file.open(&quot;plz.txt&quot;);
   for (int i=0; i&lt;=Anzahlorte-1; i++)
   {   save_file&lt;&lt;inhalt[i].plz&lt;&lt;inhalt[i].ort&lt;&lt;'\n';
   }  
   save_file.close();
   cout&lt;&lt;&quot;Ihre Daten wurden gespeichert!&quot;&lt;&lt;endl;
}
main()
{

int wahl=0;

Ort test(&quot;plz.txt&quot;);

do
{   cout&lt;&lt;&quot;Bitte waehlen Sie aus&quot;&lt;&lt;endl;
    cout&lt;&lt;&quot;1. laden&quot;&lt;&lt;endl;
    cout&lt;&lt;&quot;2. anzeigen&quot;&lt;&lt;endl;
    cout&lt;&lt;&quot;3. sortieren&quot;&lt;&lt;endl;
    cout&lt;&lt;&quot;4. speichern&quot;&lt;&lt;endl;
    cin&gt;&gt;wahl;

    switch(wahl)
    {           case 1: test.laden();
                break;
                case 2: test.anzeigen();
                break;
                case 3: test.sortieren();
                break;
                case 4: test.speichern();
                break;
                case 0:
                break;
                default: cout&lt;&lt;&quot;\n--------Falsche Eingabe------------&quot;;
                break;
    }
}
while(wahl!=0);

getch();

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2047143</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047143</guid><dc:creator><![CDATA[och menno]]></dc:creator><pubDate>Sun, 10 Apr 2011 14:49:10 GMT</pubDate></item><item><title><![CDATA[Reply to ifstream.... hab mir das laden grad irgendwie zerschossen on Sun, 10 Apr 2011 15:26:38 GMT]]></title><description><![CDATA[<p>Durch fast 150 Zeilen Code wühle ich mich nicht mit solch einer vagen Beschreibung. Aber die Ursache ist dennoch ziemlich offensichtlich: Du mischt wild C und C++ Spachmittel. Und dabei scheinst du dich mit den C Sprachmitteln nicht so besonders gut auszukennen. Wenn man mit den C-Methoden für Zeichenketten und dynamischen Speicher hantiert, dann muss man eben ganz genau wissen, was man tut, sonst passieren genau solche Fehler.</p>
<p>Abhilfe: Benutze std::string für Zeichenketten und std::vector für dynamische Speicheranforderungen ( <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /> Jetzt sehe ich auch deinen Fehler (bzw. einen davon): Du benutzt inhalt wie ein dynamisches Array, aber du weist ihm nirgendwo Speicher zu.), dann lösen sich deine Probleme ganz allein.</p>
<p>Und ein allgemeiner Tipp: Das was du an C++ gelernt hast, ist schlecht. Sehr schlecht. Nicht im Sinne, dass du schlecht gelernt hast, sondern dass der Lehrer selber keine Ahnung hat. Es bietet sich dringend an, den Lehrer/Buch/Kurs zu wechseln.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2047161</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047161</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 10 Apr 2011 15:26:38 GMT</pubDate></item><item><title><![CDATA[Reply to ifstream.... hab mir das laden grad irgendwie zerschossen on Sun, 10 Apr 2011 15:34:13 GMT]]></title><description><![CDATA[<p>danke dir....ich trüftel mal weiter rum</p>
<p>Kurs wechseln geht leider nicht,...ich befinde mich auf einer Berufsschule, wo ich das machen muss, was mir vorgekaut wird....</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2047164</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047164</guid><dc:creator><![CDATA[och menno]]></dc:creator><pubDate>Sun, 10 Apr 2011 15:34:13 GMT</pubDate></item><item><title><![CDATA[Reply to ifstream.... hab mir das laden grad irgendwie zerschossen on Sun, 10 Apr 2011 15:48:53 GMT]]></title><description><![CDATA[<p>Du kannst Dir aber die Mühe machen und mit einem Gutbuch und dem Forum ordentliches C++ lernen, was auch sehr im Sinne der Ausbildung wäre. Und dann von oben herab die Quatschaufgaben machen, also daß Du zwar weißt, wie es ordentlich geht, aber bewußt lehrerkonforme Berufsschulprogrammierung betreibst, und dabei nicht verwirrt wirst. Könnte sogar am Ende wenige Arbeit sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2047170</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047170</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 10 Apr 2011 15:48:53 GMT</pubDate></item><item><title><![CDATA[Reply to ifstream.... hab mir das laden grad irgendwie zerschossen on Sun, 10 Apr 2011 15:56:31 GMT]]></title><description><![CDATA[<p>ja ...kann schon sein...aber wird sicherlich schwer, da im mai schon prüfungen sind und ich sozusagen schon vor ende stehe <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>mein sortieren funktioniert auch nicht....das laden geht jetzt aber beim sortieren hängt er einfach nen paar herzchen und smilies dran Oo sonst lässt ers so...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2047173</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047173</guid><dc:creator><![CDATA[och menno]]></dc:creator><pubDate>Sun, 10 Apr 2011 15:56:31 GMT</pubDate></item><item><title><![CDATA[Reply to ifstream.... hab mir das laden grad irgendwie zerschossen on Sun, 10 Apr 2011 19:00:30 GMT]]></title><description><![CDATA[<p>och menno schrieb:</p>
<blockquote>
<p>mein sortieren funktioniert auch nicht....das laden geht jetzt aber beim sortieren hängt er einfach nen paar herzchen und smilies dran Oo sonst lässt ers so...</p>
</blockquote>
<p>Wieso schreibst du deine Sortierung überhaupt selber? Und dann auch noch eine Spar-Version von BubbleSort. Da würde ich lieber auf etwas vorgefertigtes zurückgreifen (z.B. std::sort). Und die Inhalte von char-Arrays kannst du nicht mit &gt; miteinander vergleichen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2047245</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047245</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sun, 10 Apr 2011 19:00:30 GMT</pubDate></item><item><title><![CDATA[Reply to ifstream.... hab mir das laden grad irgendwie zerschossen on Sun, 10 Apr 2011 19:05:21 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">}while(kk=0);
</code></pre>
<p>da fehlt garantiert ein =</p>
<p>Außerdem kann man std::swap zum Tauschen benutzen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2047246</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047246</guid><dc:creator><![CDATA[ghjghj]]></dc:creator><pubDate>Sun, 10 Apr 2011 19:05:21 GMT</pubDate></item><item><title><![CDATA[Reply to ifstream.... hab mir das laden grad irgendwie zerschossen on Sun, 10 Apr 2011 20:06:33 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;vector&gt;
#include &lt;string&gt;
#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;algorithm&gt;

/*
    Ob Klasse oder struct ist ziemlich egal, da geht es nur um Zugriffsrechte, aber so
    hast du eine ordentliche struktur. 
*/
class PostalischerOrt
{
public:
    /*
        Der Konstruktor übernimmt die Werte, die die Klasse benötigt und 
        gibt sie in der sog. Initialisierungsliste an die Mitglieder der 
        Klasse weiter.
    */
    PostalischerOrt(int plz, const std::string&amp; ort)
        : m_plz(plz), m_ort(ort)
    {}

    // Gibt nur die Plz zurück
    int GetPlz() const { return m_plz; }

    // Gibt nur den Ort zurück
    const std::string&amp; GetOrt() const { return m_ort; }

    /*
        Vergleicht ein Objekt mit einem anderen Objekt. In diesem Fall wird
        nach PLZ entschieden welches Objekt &quot;größer ist. Man kann das auch mit dem 
        Ort machen.
    */
    bool operator&lt;(const PostalischerOrt&amp; rhs)
    {
        return (GetPlz() &lt; rhs.GetPlz() );
    }

private:
    int m_plz;
    std::string m_ort;
};

class Orte
{
    /**
        Der typedef ist in diesem Fall nur ein Alias für den langen Typ. 
        Ein std::vector ist ein Array das in einem Container gekapselt wird. 
        Vorteil: Keine Zugriffsfehler, solange man einige Regeln beachtet
        und vor allem gut zu iterieren ohne irgendwelche Hilfsvariablen 
        bezüglich der Größe.
    */
    typedef std::vector&lt;PostalischerOrt&gt; TVector;    
public:
    /*
        Der Konstruktor übernimmt den Dateinamen.
    */
    Orte(const std::string&amp; filename)
        : m_filename(filename)
    {}

    /*
        Hier wird die Datei geladen. Es gibt übrigens in diesem Fall
        keinen Grund den ifstream in der Klasse als member zu speichern. 
        Du hast in deinem Beispiel eh nicht auf das Member, sondern auf das 
        lokal erzeugte Objekt zugegriffen. 
    */
    bool load()
    {
        std::ifstream stream(m_filename.c_str());
        if ( stream.is_open() &amp;&amp; stream.good() )
        {
            std::string ort;
            int plz = 0;

            while ( stream.eof() == false )
            {
                stream &gt;&gt; ort;
                stream &gt;&gt; plz; // Wie du siehst, geht das auch mit ints.

                // Hier wird das geladene in die Datenstruktur gepackt und in den Container &quot;geworfen&quot;.
                m_content.push_back(PostalischerOrt(plz, ort));
            }
            return true;
        }        
        return false;
    }

    /*
        Das solltest du ja kennen 
    */
    bool save()
    {
        std::ofstream stream(m_filename.c_str());
        if ( stream.is_open() &amp;&amp; stream.good() )
        {
            TVector::iterator it = m_content.begin();
            for ( it; it != m_content.end(); it++ )
            {
                PostalischerOrt&amp; ort = *it;
                stream &lt;&lt; ort.GetOrt() &lt;&lt; &quot;\n&quot;;
                stream &lt;&lt; ort.GetPlz() &lt;&lt; &quot;\n&quot;;
            }
        }
    }

    void display()
    {
        TVector::iterator it = m_content.begin();
        std::cout &lt;&lt; &quot;| Ort\t|   Plz\t&quot; &lt;&lt; std::endl;
        std::cout &lt;&lt; &quot;-----------------------------&quot; &lt;&lt; std::endl;
        for ( it; it != m_content.end(); it++ )
        {
            PostalischerOrt&amp; ort = *it;
            std::cout &lt;&lt; &quot;| &quot; &lt;&lt; ort.GetPlz() &lt;&lt; &quot;\t|   &quot; &lt;&lt; ort.GetOrt()&lt;&lt; std::endl;
        }
    }

    void sort()
    {
        std::sort(m_content.begin(), m_content.end());
    }

private:
    std::string m_filename;
    TVector m_content;

};

int main()
{
    Orte o(&quot;db.txt&quot;);
    o.load();
    o.sort();
    o.display();
}
</code></pre>
<p>Werf ein wenig google an zu den Dingen und frage wenn du was nicht verstehst. Aber das wäre in MEINEN Augen ein besserer Weg und vor allem C++.</p>
<p>Verwendete Datei:</p>
<pre><code>Fuerth
90763
Muenchen
80156
</code></pre>
<p>Ausgabe:</p>
<pre><code>| Ort	|   Plz	
-----------------------------
| 80156	|   Muenchen
| 90763	|   Fuerth
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2047251</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047251</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Sun, 10 Apr 2011 20:06:33 GMT</pubDate></item><item><title><![CDATA[Reply to ifstream.... hab mir das laden grad irgendwie zerschossen on Sun, 10 Apr 2011 21:00:30 GMT]]></title><description><![CDATA[<p>danke dir!</p>
<p>Ich finde es erschreckend, dass uns gesagt wird wir lernen C++ und in wirklichkeit wird uns zusammengewürfelter Müll beigebracht <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>naja letztendlich habe ich mein Programm hingekriegt...es funktioniert alles<br />
aber wird wohl nicht optimal sein, da es aus zusammengewürfeltem aus der schule besteht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2047297</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047297</guid><dc:creator><![CDATA[och menno]]></dc:creator><pubDate>Sun, 10 Apr 2011 21:00:30 GMT</pubDate></item></channel></rss>