Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Type
Anmeldungsdatum: 24.02.2006 Beiträge: 187 Wohnort: Dresden
|
Verfasst am: 24.07.2011, 21:55 Titel: [C++] Arbeiten mit vector |
|
|
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 )
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 |
|
|
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 24.07.2011, 23:10 Titel: |
|
|
new
liste.push_back()
delete
und nutz' bitte std::string... |
|
Nach oben |
|
|
Type
Anmeldungsdatum: 24.02.2006 Beiträge: 187 Wohnort: Dresden
|
Verfasst am: 24.07.2011, 23:50 Titel: |
|
|
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 |
|
|
Flo aka kleiner_hacker
Anmeldungsdatum: 23.06.2006 Beiträge: 1210
|
Verfasst am: 26.07.2011, 20:08 Titel: |
|
|
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 |
|
|
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 26.07.2011, 21:36 Titel: |
|
|
Fang doch bitte erstmal an statt char* std::strings zu benutzen. Das sorgt schonmal für 90 % weniger Fehler |
|
Nach oben |
|
|
|