<?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[Klassen &#x2F; Zeigerfeld - Fehlerhafte Ausgabe]]></title><description><![CDATA[<p>Hi,<br />
ich bin gerade dabei eine stark vereinfachte Personendatenbank zu basteln. Das ganze soll sich komplett im Eingabefenster, also mit sehr einfachen Mitteln abspielen und dient ausschließlich der Übung. (Insbesondere Stichwort: Klassen) Meine C++ Kenntnisse entsprechen etwa einem Semester Informatik als Nebenfach mit einer Wochenstunde, sind also recht überschaubar <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>Der Compiler (Dev-C++) meldet zwar keinen Fehler im Quellcode, dennoch erhalte ich an einer Stelle nicht das gewünschte Ergebnis.</p>
<p>Ich definiere eine Klasse Person mit</p>
<pre><code>private:
              string Name;
[...]
public:
void setName(string N){Name=N;};
string getName(){return Name;};
</code></pre>
<p>sowie zwei public abgeleitete Klassen Student und Mitarbeiter</p>
<p>Im Hauptprogramm bastele ich mir eine Art Menü, das mir mit Hilfe einer while-Schleife immer wieder die Auswahlmöglichkeiten anzeigt, eine davon ausführt, wieder anzeigt....<br />
Da das ganze nicht allzu lang ist und ich nicht weiß was ich davon kürzen soll ohne die mögliche Fehlerquelle wegzunehmen, erlaube ich mir mal den Code komplett zu posten.</p>
<p>Mein Problem:<br />
Wähle ich Punkt 3, also die Anzeige aus, erhalte ich kryptische Zeichen und ein Piepsen...</p>
<pre><code>bool end=false;
int anz=0, auswahl, anzmit=0, anzstu=0;
string tempname;
Mitarbeiter *mitarb = new Mitarbeiter[anz];
Student *student = new Student[anz];

int main(){

//Hauptmenü
while(end==false)
{

cout&lt;&lt;&quot;****Personendatenbank****&quot;&lt;&lt;endl
[..]
cin&gt;&gt;auswahl;

switch(auswahl)
{ 
               case 1: 
               {
               cout&lt;&lt;&quot;Wie viele Mitarbeiter moechten Sie anlegen?&quot;&lt;&lt;endl;
               cin&gt;&gt;anz;
               anzmit=anz;
               Mitarbeiter *mitarb = new Mitarbeiter[anz];
               for(int i=0; i&lt;anz; i++){
                       cout&lt;&lt;&quot;\nBitte Name von Mitarbeiter &quot;&lt;&lt;i+1&lt;&lt;&quot; eingeben&quot;&lt;&lt;endl;
                       cin&gt;&gt;tempname;
                       mitarb[i].setName(tempname);
                       }
               break;
               }

               case 2:
               {
               cout&lt;&lt;&quot;Wie viele Studenten moechten Sie anlegen?&quot;&lt;&lt;endl;
               cin&gt;&gt;anz;
               anzstu=anz;
               Student *student = new Student[anz];
               for(int i=0; i&lt;anz; i++){
                       cout&lt;&lt;&quot;\nBitte Name von Student &quot;&lt;&lt;i+1&lt;&lt;&quot; eingeben&quot;&lt;&lt;endl;
                       cin&gt;&gt;tempname;
                       student[i].setName(tempname);
                       }      
               break;
               }

               case 3:
               {
               cout&lt;&lt;&quot;Mitarbeiter:&quot;&lt;&lt;endl;
               for(int i=0; i&lt;anzmit; i++){
                       cout&lt;&lt;mitarb[i].getName()&lt;&lt;endl;
                       }
               cout&lt;&lt;&quot;Studenten:&quot;&lt;&lt;endl;
               for(int i=0; i&lt;anzstu; i++){
                       cout&lt;&lt;student[i].getName()&lt;&lt;endl;}
               break;
               }
} //switch ende

} //while Ende

getch();
}
</code></pre>
<p>Das Ganze ist bestimmt nicht allzu elegant und alles andere als vollständig, ich wäre allerdings schon äußerst zufrieden, wenns einfach nur das machen würde, was ich von ihm möchte.<br />
Ich wäre sehr dankbar, wenn mir jemand die Fehlerquelle mitteilen würde.<br />
lg <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/topic/289108/klassen-zeigerfeld-fehlerhafte-ausgabe</link><generator>RSS for Node</generator><lastBuildDate>Tue, 18 Aug 2026 21:46:48 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/289108.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 28 Jun 2011 18:39:07 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Klassen &#x2F; Zeigerfeld - Fehlerhafte Ausgabe on Tue, 28 Jun 2011 18:39:07 GMT]]></title><description><![CDATA[<p>Hi,<br />
ich bin gerade dabei eine stark vereinfachte Personendatenbank zu basteln. Das ganze soll sich komplett im Eingabefenster, also mit sehr einfachen Mitteln abspielen und dient ausschließlich der Übung. (Insbesondere Stichwort: Klassen) Meine C++ Kenntnisse entsprechen etwa einem Semester Informatik als Nebenfach mit einer Wochenstunde, sind also recht überschaubar <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>Der Compiler (Dev-C++) meldet zwar keinen Fehler im Quellcode, dennoch erhalte ich an einer Stelle nicht das gewünschte Ergebnis.</p>
<p>Ich definiere eine Klasse Person mit</p>
<pre><code>private:
              string Name;
[...]
public:
void setName(string N){Name=N;};
string getName(){return Name;};
</code></pre>
<p>sowie zwei public abgeleitete Klassen Student und Mitarbeiter</p>
<p>Im Hauptprogramm bastele ich mir eine Art Menü, das mir mit Hilfe einer while-Schleife immer wieder die Auswahlmöglichkeiten anzeigt, eine davon ausführt, wieder anzeigt....<br />
Da das ganze nicht allzu lang ist und ich nicht weiß was ich davon kürzen soll ohne die mögliche Fehlerquelle wegzunehmen, erlaube ich mir mal den Code komplett zu posten.</p>
<p>Mein Problem:<br />
Wähle ich Punkt 3, also die Anzeige aus, erhalte ich kryptische Zeichen und ein Piepsen...</p>
<pre><code>bool end=false;
int anz=0, auswahl, anzmit=0, anzstu=0;
string tempname;
Mitarbeiter *mitarb = new Mitarbeiter[anz];
Student *student = new Student[anz];

int main(){

//Hauptmenü
while(end==false)
{

cout&lt;&lt;&quot;****Personendatenbank****&quot;&lt;&lt;endl
[..]
cin&gt;&gt;auswahl;

switch(auswahl)
{ 
               case 1: 
               {
               cout&lt;&lt;&quot;Wie viele Mitarbeiter moechten Sie anlegen?&quot;&lt;&lt;endl;
               cin&gt;&gt;anz;
               anzmit=anz;
               Mitarbeiter *mitarb = new Mitarbeiter[anz];
               for(int i=0; i&lt;anz; i++){
                       cout&lt;&lt;&quot;\nBitte Name von Mitarbeiter &quot;&lt;&lt;i+1&lt;&lt;&quot; eingeben&quot;&lt;&lt;endl;
                       cin&gt;&gt;tempname;
                       mitarb[i].setName(tempname);
                       }
               break;
               }

               case 2:
               {
               cout&lt;&lt;&quot;Wie viele Studenten moechten Sie anlegen?&quot;&lt;&lt;endl;
               cin&gt;&gt;anz;
               anzstu=anz;
               Student *student = new Student[anz];
               for(int i=0; i&lt;anz; i++){
                       cout&lt;&lt;&quot;\nBitte Name von Student &quot;&lt;&lt;i+1&lt;&lt;&quot; eingeben&quot;&lt;&lt;endl;
                       cin&gt;&gt;tempname;
                       student[i].setName(tempname);
                       }      
               break;
               }

               case 3:
               {
               cout&lt;&lt;&quot;Mitarbeiter:&quot;&lt;&lt;endl;
               for(int i=0; i&lt;anzmit; i++){
                       cout&lt;&lt;mitarb[i].getName()&lt;&lt;endl;
                       }
               cout&lt;&lt;&quot;Studenten:&quot;&lt;&lt;endl;
               for(int i=0; i&lt;anzstu; i++){
                       cout&lt;&lt;student[i].getName()&lt;&lt;endl;}
               break;
               }
} //switch ende

} //while Ende

getch();
}
</code></pre>
<p>Das Ganze ist bestimmt nicht allzu elegant und alles andere als vollständig, ich wäre allerdings schon äußerst zufrieden, wenns einfach nur das machen würde, was ich von ihm möchte.<br />
Ich wäre sehr dankbar, wenn mir jemand die Fehlerquelle mitteilen würde.<br />
lg <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/2085629</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2085629</guid><dc:creator><![CDATA[wildschwein]]></dc:creator><pubDate>Tue, 28 Jun 2011 18:39:07 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen &#x2F; Zeigerfeld - Fehlerhafte Ausgabe on Tue, 28 Jun 2011 18:43:45 GMT]]></title><description><![CDATA[<p>Bäh! Das Ganze ist von Specherlecks durchzogen, nutze bitte <code>std::vector</code> . Kommst du zufällig von C <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/2085631</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2085631</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Tue, 28 Jun 2011 18:43:45 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen &#x2F; Zeigerfeld - Fehlerhafte Ausgabe on Tue, 28 Jun 2011 18:45:28 GMT]]></title><description><![CDATA[<p>In den case 1- und case 2 Blöcken hast du jeweils einen eigenen Zeiger definiert und dorthin geschrieben, im case 3 Block nutzt du die globalen Arrays.</p>
<p>Abgesehen davon strotzt dein Code nur so vor Speicherlecks - und du solltest eher mit std::vector&lt;&gt; arbeiten als mit nackten Zeigern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2085634</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2085634</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 28 Jun 2011 18:45:28 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen &#x2F; Zeigerfeld - Fehlerhafte Ausgabe on Tue, 28 Jun 2011 18:51:17 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>In den case 1- und case 2 Blöcken hast du jeweils einen eigenen Zeiger definiert und dorthin geschrieben, im case 3 Block nutzt du die globalen Arrays.</p>
<p>Abgesehen davon strotzt dein Code nur so vor Speicherlecks - und du solltest eher mit std::vector&lt;&gt; arbeiten als mit nackten Zeigern.</p>
</blockquote>
<p>Einer der Mitgründe für die Probleme ist die großzügige Verwendung globaler Variablen. Daran solltest du, neben den anderen genannten Sachen, ebenfalls arbeiten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2085637</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2085637</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 28 Jun 2011 18:51:17 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen &#x2F; Zeigerfeld - Fehlerhafte Ausgabe on Tue, 28 Jun 2011 19:02:51 GMT]]></title><description><![CDATA[<p>Ich glaub euch gern, dass das ganz recht grausig aussieht, wenn man ne Ahnung davon hat <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>Tatsächlich scheint mein Prof irgendwie an C zu hängen. Der Großteil seiner Folien scheint komplett auf C++ Elemente zu verzichten.<br />
Diese bringt er nur in der Theorie immer mal wieder ein, bemerkt dass das ganze ja sehr praktisch ist, aber weißt eigentlich kaum auf die grundsätzlichen Unterschiede hin.</p>
<p>Ich habe auch noch nie was von vectors gehört... Mein ganzes Skript nutzt Zeiger im Prinzip auf die Weise wie ich oben (vielleicht aber wenigstens noch so dass es dann läuft <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>Kann man das Programm auf diese Weise noch irgendwie retten?<br />
(Wie erreiche ich also, dass ich in den cases 1 und 2 Objekte aus den entsprechenden Klassen erhalte und fülle und dann in 3 auf ebendiese zugreifen kann?)</p>
<p>Oder sollte ich mir wirklich mal die Vektor-Variante anschauen und ist das aus einigermaßen gut zu verstehen und umzusetzen?<br />
Gedacht ist diese Aufgabe wohl ohne - da ich einfach noch nie was davon gehört habe - aber wenns dringend anzuraten ist, versuch ich mich da auch gerne.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2085648</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2085648</guid><dc:creator><![CDATA[wildschwein]]></dc:creator><pubDate>Tue, 28 Jun 2011 19:02:51 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen &#x2F; Zeigerfeld - Fehlerhafte Ausgabe on Tue, 28 Jun 2011 19:06:43 GMT]]></title><description><![CDATA[<p>wildschwein schrieb:</p>
<blockquote>
<p>Oder sollte ich mir wirklich mal die Vektor-Variante anschauen und ist das aus einigermaßen gut zu verstehen und umzusetzen?<br />
Gedacht ist diese Aufgabe wohl ohne - da ich einfach noch nie was davon gehört habe - aber wenns dringend anzuraten ist, versuch ich mich da auch gerne.</p>
</blockquote>
<p>Prinzipiell gilt dass ein <code>std::vector</code> immer einem rohen Array vorzuziehen ist. Und du hast mein volles Beileid: Viel zu oft bekommen Leute an Unis (o.ä.) &quot;C mit cout&quot; erklärt. Und da es &quot;C mit cout&quot; ist arbeitet man mit gefährlichen Arrays.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2085652</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2085652</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Tue, 28 Jun 2011 19:06:43 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen &#x2F; Zeigerfeld - Fehlerhafte Ausgabe on Tue, 28 Jun 2011 19:08:43 GMT]]></title><description><![CDATA[<p>Frag doch mal deinen Professor, wo er C++ gelernt hat <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>wildschwein schrieb:</p>
<blockquote>
<p>Kann man das Programm auf diese Weise noch irgendwie retten?<br />
(Wie erreiche ich also, dass ich in den cases 1 und 2 Objekte aus den entsprechenden Klassen erhalte und fülle und dann in 3 auf ebendiese zugreifen kann?)</p>
</blockquote>
<p>Erste Notfallmaßnahme wäre es, nur einen Satz an Zeiger-Variablen zu verwenden (und die am besten so lokal wie möglich, d.h. für dich in der main()-Funktion). Allerdings benötigst du noch einiges mehr an Speicherverwaltung, um daraus etwas fehlerfreies machen zu können</p>
<blockquote>
<p>Oder sollte ich mir wirklich mal die Vektor-Variante anschauen und ist das aus einigermaßen gut zu verstehen und umzusetzen?</p>
</blockquote>
<p>Ja, das solltest du.</p>
<blockquote>
<p>Gedacht ist diese Aufgabe wohl ohne - da ich einfach noch nie was davon gehört habe - aber wenns dringend anzuraten ist, versuch ich mich da auch gerne.</p>
</blockquote>
<p>Es ist trotzdem besser, du gewöhnst dir frühzeitig einen vernünftigen Stil an, das erleichtert dir das Leben auch, wenn du mit dem Studium fertig bist und dieses Wissen in der Praxis anwenden darfst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2085655</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2085655</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 28 Jun 2011 19:08:43 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen &#x2F; Zeigerfeld - Fehlerhafte Ausgabe on Tue, 28 Jun 2011 19:20:18 GMT]]></title><description><![CDATA[<p>wildschwein schrieb:</p>
<blockquote>
<p>Kann man das Programm auf diese Weise noch irgendwie retten?</p>
</blockquote>
<p>Retten nur in dem Sinne, dass man daraus etwas machen könnte, das bei vorsichtiger Behandlung eventuell nicht explodiert. Aber die Speicherlöcher sitzen zu tief, als dass man sie wirklich zuverlässig loswerden könnte. Da muss eine grundlegend andere Vorgehensweise her als Pointerfrickelei.</p>
<blockquote>
<p>(Wie erreiche ich also, dass ich in den cases 1 und 2 Objekte aus den entsprechenden Klassen erhalte und fülle und dann in 3 auf ebendiese zugreifen kann?)</p>
</blockquote>
<p>Es sollte reichen, wenn du in den case-Fällen deinen globalen Variablen das neue Feld zuweist anstatt neue Pointer anzulegen. Also <code>student = new Student[anz]</code> statt <code>Student *student = new Student[anz]</code> und beim Mitarbeiter ebenso. Das Programm hat dann aber immer noch andere Probleme.</p>
<blockquote>
<p>Oder sollte ich mir wirklich mal die Vektor-Variante anschauen und ist das aus einigermaßen gut zu verstehen und umzusetzen?</p>
</blockquote>
<p>So sähe eine robuste Lösung mit vector aus. Da kann eigentlich nichts schiefgehen, außer dass die Eingaben nicht auf Erfolg geprüft werden (d.h. wenn jemand einen Buchstaben eingibt, wo eine Zahl erwartet wird, passieren komische Dinge):</p>
<pre><code class="language-cpp">#include&lt;string&gt;

class Person
{
private:
  std::string Name;
public:
  //  void setName(string N){Name=N;};
  // Da der Name sich wohl nicht ändern wird, schreiben wir das im 
  // Konstruktor und lassen den Setter mal lieber sein:
  Person(const std::string&amp; name): Name(name) {}

  std::string getName(){return Name;}  // Nach Funktionen braucht kein Semikolon
};

class Mitarbeiter: public Person
{
public:
  Mitarbeiter(const std::string&amp; name): Person(name) {}
};

class Student: public Person
{
public:
  Student(const std::string&amp; name): Person(name) {}
};

// Globale Variablen lassen wir mal lieber ganz weg. Gibt nur Scherereien

#include&lt;iostream&gt;
#include&lt;vector&gt;
using namespace std;

int main(){

  bool end = false;   

  vector&lt;Student&gt; studenten;
  vector&lt;Mitarbeiter&gt; mitarbeiter;

  //Hauptmenü
  while(end==false)
    {

      cout&lt;&lt;&quot;****Personendatenbank****&quot;&lt;&lt;endl;

      int auswahl;
      cin&gt;&gt;auswahl;

      switch(auswahl)
        {
        case 1:
          {
            cout&lt;&lt;&quot;Wie viele Mitarbeiter moechten Sie anlegen?&quot;&lt;&lt;endl;
            int anz;
            cin&gt;&gt;anz;
            for(int i=0; i&lt;anz; i++){
              cout&lt;&lt;&quot;\nBitte Name von Mitarbeiter &quot;&lt;&lt;i+1&lt;&lt;&quot; eingeben&quot;&lt;&lt;endl;
              string tempname;
              cin&gt;&gt;tempname;
              mitarbeiter.push_back(tempname); // hier wird der Konstruktor implizit aufgerufen
            }
            break;
          }

        case 2:
          {
            cout&lt;&lt;&quot;Wie viele Studenten moechten Sie anlegen?&quot;&lt;&lt;endl;
            int anz;
            cin&gt;&gt;anz;
            for(int i=0; i&lt;anz; i++){
              cout&lt;&lt;&quot;\nBitte Name von Student &quot;&lt;&lt;i+1&lt;&lt;&quot; eingeben&quot;&lt;&lt;endl;
              string tempname;
              cin&gt;&gt;tempname;
              studenten.push_back(tempname);
            }      
            break;
          }

        case 3:
          {
            cout&lt;&lt;&quot;Mitarbeiter:&quot;&lt;&lt;endl;
            for(int i=0; i&lt;mitarbeiter.size(); i++){
              cout&lt;&lt;mitarbeiter[i].getName()&lt;&lt;endl;
            }
            cout&lt;&lt;&quot;Studenten:&quot;&lt;&lt;endl;
            for(int i=0; i&lt;studenten.size(); i++){
              cout&lt;&lt;studenten[i].getName()&lt;&lt;endl;}
            break;
          }
        } //switch ende
    } //while Ende
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2085667</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2085667</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 28 Jun 2011 19:20:18 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen &#x2F; Zeigerfeld - Fehlerhafte Ausgabe on Tue, 28 Jun 2011 20:02:48 GMT]]></title><description><![CDATA[<p>Wow, danke für eure Antworten!<br />
Auch wenn ich die Funktionsweise von Vektoren noch nicht völlig verstehe, wirkt die Variante trotzdem deutlich angenehmer.<br />
Ich werde mich morgen mal ausführlicher damit beschäftigen und vielleicht auch nochmal mit meinem Übungsleiter drüber reden.</p>
<p>Vielen Dank soweit <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/2085709</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2085709</guid><dc:creator><![CDATA[wildschwein]]></dc:creator><pubDate>Tue, 28 Jun 2011 20:02:48 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen &#x2F; Zeigerfeld - Fehlerhafte Ausgabe on Wed, 29 Jun 2011 08:46:04 GMT]]></title><description><![CDATA[<p>wildschwein schrieb:</p>
<blockquote>
<p>Wow, danke für eure Antworten!<br />
Auch wenn ich die Funktionsweise von Vektoren noch nicht völlig verstehe, wirkt die Variante trotzdem deutlich angenehmer.<br />
Ich werde mich morgen mal ausführlicher damit beschäftigen und vielleicht auch nochmal mit meinem Übungsleiter drüber reden.</p>
<p>Vielen Dank soweit <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>Den Kerl einfach hier vorbeischicken, den Rest kriegen wir schon hin <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2085882</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2085882</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Wed, 29 Jun 2011 08:46:04 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen &#x2F; Zeigerfeld - Fehlerhafte Ausgabe on Wed, 13 Jul 2011 09:13:54 GMT]]></title><description><![CDATA[<p>So, nachdem ich mich jetzt nach einiger Zeit mit anderen Prioritäten mal wieder intensiv mit meiner kleinen Aufgabe hier auseinandersetzen konnte, möchte mich mich nochmal bedanken.</p>
<p>Das Programm ist mittlerweile deutlich gewachsen und seitdem ich alles mit Vektoren schreibe, hatte ich keine größeren Pausen wegen unauffindbarer Fehler mehr und es läuft insgesamt ganz wunderbar.<br />
Mein Übungsleiter schein zwar zwischenzeitlich etwas verwirrt, als er keine guten alten Arrays gefunden hat und musste erstmal fragen, was ich denn da gemacht habe, ist aber doch sicher zufrieden, dass die Sache so schön läuft <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>An dieser Stelle habe ich nochmal eine Frage:<br />
Ich würde die Vektoren nun gerne auslesen, abspeichern und bei Programmstart wieder einlesen.<br />
Darüber habe ich bisher leider noch nie was gehört.<br />
Ich könnte mir vorstellen, dass das mit fprintf und irgendeiner Funktion, die die Textdatei dann wieder wie gewünscht verarbeitet, klappt.<br />
Ich würde mich freuen, wenn mir jemand kurz eine möglichst anfängerfreundliche Methode zeigen könnte - evtl genügt auch ein Stichwort oder ein Link.</p>
<p>Die Frage hat ja nicht mehr allzu viel mit meinem ursprünglichen anliegen zu tun, wenns gewünscht wird kann ich auch gern nen neuen Thread erstellen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2092197</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2092197</guid><dc:creator><![CDATA[wildschwein]]></dc:creator><pubDate>Wed, 13 Jul 2011 09:13:54 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen &#x2F; Zeigerfeld - Fehlerhafte Ausgabe on Wed, 13 Jul 2011 09:20:39 GMT]]></title><description><![CDATA[<p>wildschwein schrieb:</p>
<blockquote>
<p>mit fprintf</p>
</blockquote>
<p>Ist auch aus C. Nutze <code>std::fstream</code> :</p>
<pre><code class="language-cpp">#include &lt;fstream&gt;
int main()
{
  std::ifstream Read(&quot;Filename.txt&quot;);
  //Von Read lesen
  Read.close(); //Bin mir nicht sicher ob nötig oder nicht

  std::ofstream Write(&quot;Filename.txt&quot;);
  //Nach Write schreiben
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2092203</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2092203</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Wed, 13 Jul 2011 09:20:39 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen &#x2F; Zeigerfeld - Fehlerhafte Ausgabe on Wed, 13 Jul 2011 09:34:33 GMT]]></title><description><![CDATA[<p>EOutOfResources schrieb:</p>
<blockquote>
<pre><code class="language-cpp">#include &lt;fstream&gt;
int main()
{
  std::ifstream Read(&quot;Filename.txt&quot;);
  //Von Read lesen
  Read.close(); //Bin mir nicht sicher ob nötig oder nicht

  std::ofstream Write(&quot;Filename.txt&quot;);
  //Nach Write schreiben
}
</code></pre>
</blockquote>
<p>Dafür hat uns der Herr Blöcke geschenkt.</p>
<pre><code class="language-cpp">#include &lt;fstream&gt;
int main()
{
  {
    std::ifstream Read(&quot;Filename.txt&quot;);
    //Von Read lesen
  }//Schwuppduwupp, und Read ist weg. 

  std::ofstream Write(&quot;Filename.txt&quot;);
  //Nach Write schreiben
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2092212</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2092212</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Wed, 13 Jul 2011 09:34:33 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen &#x2F; Zeigerfeld - Fehlerhafte Ausgabe on Wed, 13 Jul 2011 09:35:37 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Dafür hat uns der Herr Blöcke geschenkt.</p>
</blockquote>
<p>Ich finde unbedingte Scopes hässlich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2092213</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2092213</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Wed, 13 Jul 2011 09:35:37 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen &#x2F; Zeigerfeld - Fehlerhafte Ausgabe on Wed, 13 Jul 2011 09:37:35 GMT]]></title><description><![CDATA[<p>EOutOfResources schrieb:</p>
<blockquote>
<p>volkard schrieb:</p>
<blockquote>
<p>Dafür hat uns der Herr Blöcke geschenkt.</p>
</blockquote>
<p>Ich finde unbedingte Scopes hässlich.</p>
</blockquote>
<p>Dafür kann ich nicht aus Versehen von Read lesen, nachdem er geschlossen wurde.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2092217</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2092217</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Wed, 13 Jul 2011 09:37:35 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen &#x2F; Zeigerfeld - Fehlerhafte Ausgabe on Wed, 13 Jul 2011 09:38:24 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Dafür kann ich nicht aus Versehen von Read lesen, nachdem er geschlossen wurde.</p>
</blockquote>
<p>Stimmt, daran habe ich nicht gedacht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2092218</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2092218</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Wed, 13 Jul 2011 09:38:24 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen &#x2F; Zeigerfeld - Fehlerhafte Ausgabe on Wed, 13 Jul 2011 09:40:35 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;fstream&gt;
int main()
{
  std::ifstream Read(&quot;Filename.txt&quot;);
  //Von Read lesen
  Read.close(); //Bin mir nicht sicher ob nötig oder nicht
  #define Read (void)(&quot;dead name&quot;)

  std::ofstream Write(&quot;Filename.txt&quot;);
  //Nach Write schreiben
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2092220</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2092220</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Wed, 13 Jul 2011 09:40:35 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen &#x2F; Zeigerfeld - Fehlerhafte Ausgabe on Wed, 13 Jul 2011 10:28:17 GMT]]></title><description><![CDATA[<p>Warum nicht read/write in freie Funktionen auslagern?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2092233</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2092233</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Wed, 13 Jul 2011 10:28:17 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen &#x2F; Zeigerfeld - Fehlerhafte Ausgabe on Wed, 13 Jul 2011 22:33:42 GMT]]></title><description><![CDATA[<p>Danke für eure Antworten!</p>
<p>Wenn ich nun mit ofstream eine Textdatei so beschreibe, dass in jeder Zeile genau ein Attribut(Strings bzw Integers) eines Elements meines Vektors steht, wobei für unterschiedliche Attribute unterschiedliche Dateien verwendet werden - wie kann ich diese wieder zeilenweise auslesen? Klappt das auch wenn ich Zahlen (in dieser Datei steht dann also nix anderes) direkt wieder als integer betrachten möchte?</p>
<p>Bin bisher v.a. auf getline() gestoßen, aber ich werd um die Uhrzeit irgendwie nicht mehr recht schlau draus <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2092501</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2092501</guid><dc:creator><![CDATA[wildschwein]]></dc:creator><pubDate>Wed, 13 Jul 2011 22:33:42 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen &#x2F; Zeigerfeld - Fehlerhafte Ausgabe on Wed, 13 Jul 2011 22:43:16 GMT]]></title><description><![CDATA[<p>Ich würde die Daten auf jeden Fall nicht auf mehrere Dateien verteilen, sondern jedes Objekt &quot;am Stück&quot; (d.h. die einzelnen Attribute hintereinander) speichern. Dazu schreibst du dir z.B. zwei Methoden, die jeweils ein Element lesen bzw. schreiben können und kannst diese dann auf den gesamten vector&lt;&gt; anwenden (die hohe Kunst ist es, dafür die Stream-Operatoren zu überladen).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2092502</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2092502</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 13 Jul 2011 22:43:16 GMT</pubDate></item></channel></rss>