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


Log in to reply