Probleme bei der Konvertierung
-
Hallo,
versuche mine ersten Schritte in C++ und stoße dabei auf Konvertierungsprobleme:class Datum{ public: int tag; int monat; int jahr; string Daten(){ return tag; } //Konstruktor Datum(int day, int month, int year){ tag = day; monat = month; jahr = year; } //Methode string toString(){ return "Datum: "+ Daten(); } };
string Daten darf es doch gar nicht heißen?? sondern int Daten, oder???
Aber dann klappt der Aufruf unter toString nicht mehr...
Wie macht man das??Gruß infostud
-
infostud schrieb:
string Daten(){ return tag;
}
in c++ gibts keine magischen typumwandlungen wie z.b in basic, perl usw.
dein code sollte nicht kompilieren.
In deinem fall muss du selbst konvertieren. Sieh dir mal itoa oder stringstreams an.
K
-
Vielleicht solltest du eine Methode schreiben, die dir ein Datum als string zurückliefert.
In etwa so:
string Daten() { char szBuffer[256]; sprintf(szBuffer, "%d, %d, %d", tag,monat,jahr); return string(szBuffer); }
Das klappt, weil string zwar mit Zahlen nichts anfangen kann, aber einen Konstruktor hat, der mit char* umgehen kann.
Er erstellt also in der letzten Zeile mit dem return ein temporäres StringObjekt, das den Inhalt der char* Zeichenkette hat und das wird dann zurückgegeben von der Funktion.
-
Allgemein könntest du Zahlen so in einen String umwandeln
#include <sstream> #include <string> ... std::ostringstream ostream; ostream << 9 << '.' << 9; string asStr; asStr = ostream.str(); ...
Jetzt steht in dem std::string asStr: 9.9
/edit:
Dazu gibt es aber auch einen FAQ-Beitrag. Diesen solltest du unbedingt konsultieren.
und am besten noch http://fara.cs.uni-potsdam.de/~kaufmann/?page=GenCppFaqs&faq=IntToString#Answ.Caipi