Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

[C++] Arbeiten mit vector

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Computer-Forum
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Type



Anmeldungsdatum: 24.02.2006
Beiträge: 187
Wohnort: Dresden

BeitragVerfasst am: 24.07.2011, 20:55    Titel: [C++] Arbeiten mit vector Antworten mit Zitat

Hallo Leute,

ich bastel gerade etwas mit C++ herum und hab mal eine Frage: (hoffentlich gibt es hier auch den einen oder anderen C++ler grinsen )
Ich habe mir eine Klasse erstellt und mir wollte nun eine Liste generieren.
Dabei sollen einige Werte aus einer Datei eingelesen werden, die in einer neuen klasse gespeichert werden und an den vector angehangen werden. Das Ganze soll ungefähr so aussehen:
Code:
[...]

class computer {
   
   private:
      char *titel;
                [...]
   public:
      char *get_titel();
      void set_titel (char *Titel);
                [...]
}
[...]

int main (int argc, const char* argv[]) {

   vector<computer> liste;

   ifstream datei;
   string neu_titel;

   datei.open("liste.txt", ios_base::in);
   if (datei) {

      while (!datei.eof()) {
         neu_titel = "";
         getline(datei, neu_titel);
//********
//Hier ist das Problem:
         liste.push_back(???);
//********
      }
   }
   datei.close();
   
   for(unsigned int i=0; i < liste.size();i++){
      cout <<liste.at(i).get_titel()<<endl;
   }

}

wie kann ich mir denn bei jedem Schleifendurchlauf eine neue Klasse "computer" generieren und diese dann per "set_titel(neu_titel)" bestücken?

Danke schonmal im Voraus.
MfG Type
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 24.07.2011, 22:10    Titel: Antworten mit Zitat

new
liste.push_back()
delete

und nutz' bitte std::string...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Type



Anmeldungsdatum: 24.02.2006
Beiträge: 187
Wohnort: Dresden

BeitragVerfasst am: 24.07.2011, 22:50    Titel: Antworten mit Zitat

hm... ich bin nicht sicher was ich machen soll.
ich hab mir eine ""Hilfsklasse" erstellt:
Code:
[...]

class computer {
   
   private:
      char *titel;
                [...]
   public:
      char *get_titel();
      void set_titel (char *Titel);
                [...]
}
[...]

int main (int argc, const char* argv[]) {

   vector<computer> liste;

   ifstream datei;
   std::string neu_titel;

   datei.open("liste.txt", ios_base::in);
   if (datei) {

      while (!datei.eof()) {
         neu_titel = "";
         getline(datei, neu_titel);
//*****
//Neu:
         computer help;
         help.set_titel(str2char(neu_titel) );
         liste.push_back(help);
//*****
      }
   }
   datei.close();
   
   for(unsigned int i=0; i < liste.size();i++){
      cout <<liste.at(i).get_titel()<<endl;
   }

}

Leider ist der Vektor nur komplett mit dem letzten Wert aus der Datei gefüllt (Was ja auch klar ist).
new und delete wollen bei mir nicht.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Flo
aka kleiner_hacker


Anmeldungsdatum: 23.06.2006
Beiträge: 1210

BeitragVerfasst am: 26.07.2011, 19:08    Titel: Antworten mit Zitat

das ist nicht annähernd klar, und sollte eigentlich auch nicht so sein

wenn du ein computer help hast (und kein computer* help), und das push_backst, wird das ding kopiert (implizit, also ohne dass du was machen musst).

sollte eigentlich klappen


ehrlich gesagt verstehe ich aber auch dein problem nicht wirklich


kauf dir am besten ein C++-buch, oder zieh dir ein tutorial rein
_________________
MFG
Flo

Satoru Iwata: Wer Spaß am Spielen hat, fragt nicht nach Grafik.

zum korrekten Verstaendnis meiner Beitraege ist die regelmaessige Wartung des Ironiedetektors unerlaesslich.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 26.07.2011, 20:36    Titel: Antworten mit Zitat

Fang doch bitte erstmal an statt char* std::strings zu benutzen. Das sorgt schonmal für 90 % weniger Fehler
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Computer-Forum Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz