Zeichenkette ausgeben
-
Hi,
ich möchte mit der Methodeconst 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