Zeichenkette ausgeben



  • Hi,
    ich möchte mit der Methode

    const char SymtabEntry::getType() {
    	 switch(this->type) {
    		 case 0:
    		 	return (const char)"TokenMod";
    		 case 2:
    		 	return (const char)"TokenDiv";
    		 case 3:
    		 	return (const char)"TokenPrint";
    		 case 4:
    		 	return (const char)"TokenMax";
    		 case 5:
    		 	return (const char)"TokenMin";
    		 default:
    		 	return (const char)" ";
    	 }
    	 return (const char)" ";
    }
    

    die jeweiligen Zeichenketten ausgeben.
    im Augenblick rufe ich die Methode folgendermassen auf.

    cout << ent->getType() << endl;
    

    Das Problem ist das ich so wie der Code jetzt ist zwar etwas raus bekomme das aber nicht die Zeichenkette ist die ich möchte.

    schonmal danke für eure Antworten.



  • Du castest das zu einem konstanten Zeichen was du willst ist (const char*)



  • Und wenn du den Rückgabewert auf const char* änderst, brauchst den cast auch gar nicht.



  • Musst mal reinsteppen und schauen, was "this->type" zurückgibt, und wo er dann hinspringt...

    PS: Wofür ist der "const char"-cast? Und wofür das letzte return (da kommt er nie hin)?



  • Danke für die rasche Hilfe



  • du musst aus dem

    return (const char)"Blah";
    

    ein

    return static_cast<const char*>("Blah");
    

    machen

    Denn ein char ist EIN EINZELNES ZEICHEN in
    einfachen anführungszeichen ! ("CHARacter", z.B. 'a')

    und eine ZeichenKette ist ein char* (char pointer)
    (z.B. "Blah")

    in C++ verwendet mann allerdings eher ein stringklasse, z.b. std::string
    welche in <string> edfiniert ist.
    also dann sähe dein code so aus:

    #include <string>
    //Rest CODE ...
    std::string SymtabEntry::getType() {
         switch(this->type) {
             case 0:
                 return static_cast<std::string>("TokenMod");
             case 2:
                  return static_cast<std::string>("TokenDiv");
             case 3:
                 return static_cast<std::string>("TokenPrint");
             case 4:
                  return static_cast<std::string>("TokenMax");
             case 5:
                return static_cast<std::string>("TokenMin");
             default:
                 return static_cast<std::string>(" ");
         }
    }
    

    Mfg Shade37337



  • sorry als ich angeangen hab zu schreiben hatte noch keiner geantwortet....
    aber hier hast du ein zusammenfassung .. und std::string 😉

    Mfg Sahde37337



  • Wobei die casts überflüssig sind, wenn man den Rückgabetyp korrigiert.



  • jep...das sind sie.....allerdings sidn sie dass auch beim original code
    wenn man statt const char einen const char * nimmt, was die lösung des problems gewesen wäre...
    ich wollte ih nur auf die template casts von C++ aufmerksam amchen. da er C-casts verwendet.

    Mfg Shade37337


Anmelden zum Antworten