struct array + string + ausgabe mit printf
-
Hallo ich habe ein struct in einem Header:
struct Karteikarte { string Vorname; string Straße; string SNummer; string Stadt; };dann erstelle ich ein Feld mit 20 Karteikarten
Karteikarte feld[20];dann tu ich das initialisieren mit irgend welchen Werten
for(int i=0; i<20; i++) { feld[i].Vorname = "Dieter"; feld[i].Straße = "Feldweg 3"; feld[i].Stadt = "Erfurt"; //feld[i].SNummer = (char) i; }bis dahin geht alles und jetzt kommt das problem ch will das ganze testweise ausgeben
for(int i=0; i<20; i++) { printf("%s wohnt in der/im/am %s in %s und hat die Schornsteinnummer \ \n", feld[i].Vorname, feld[i].Straße, feld[i].Stadt); }ja und bei der ausgabe kommt dann :
Unbehandelte Ausnahme bei 0x10227c2f (msvcr80d.dll) in Uebung_8.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x74656944.an der stelle in der outpu.c :
#else /* _UNICODE */ if (flags & (FL_LONG|FL_WIDECHAR)) { if (text.wz == NULL) /* NULL passed, use special string */ text.wz = __wnullstring; bufferiswide = 1; pwch = text.wz; while ( i-- && *pwch ) ++pwch; textlen = (int)(pwch - text.wz); /* textlen now contains length in wide chars */ } else { if (text.sz == NULL) /* NULL passed, use special string */ text.sz = __nullstring; p = text.sz; ---> while (i-- && *p) ++p; textlen = (int)(p - text.sz); /* length of the string */ }ich denk mal ich muss das anders ausgeben aber ich hab noch kein plan wie. Wer kann mir da helfen? Wenn ja wie?
-
printf und std::string passen nicht. Da wirst Du c_str() verwenden müssen um es printf recht zu machen.
Besser wäre aber die Ausgabe mit cout:
cout<<feld[i].Vorname << " wohnt in der/im/am " << feld[i].Straße <<" in "<< feld[i].Stadt << " und hat die Schornsteinnummer "<<endl;
-
wie benutz ich dieses c_str()? und was muss ich dafür noch einbinden
-
Hallo
c_str() ist eine Methode von std::string. Wenn du also schon std::string verwendest, must du nichts weiter für c_str() einbinden.
Sondern du rufst es für das konkrete String-Objekt aufstd::string test = "Test"; func(test.c_str());Allerdings solltest du unbedingtwie Knuddelbaer gezeigt hat die ordentlichen C++ Mittel benutzen, statt alter C-Mittel.
bis bald
akari
-
mir hat mal jemand gesagt das cout net so toll sein soll
-
Hallo
Dann frag doch mal dem jemand, was an cout "net so toll" sein soll.
Und warum das typunsiche printf benutzten will.bis bald
akari
-
pad8626 schrieb:
mir hat mal jemand gesagt das cout net so toll sein soll
Ist es auch nicht. Aber immer noch besser als dieses ganze printf Zeugs.
-
wenn beides net toll ist gibts alternativen ??
-
Wozu, nutzt einfach cout, das ist ausreichend und noch dazu Typensicher!

-
war aber nicht antwort auf meine frage