Datentyp als Vorraussetzung
-
Dkpingi schrieb:
Das verstehe ich jetzt nicht ganz es gibt doch Typumwandlung also wieso sagst du dass x immer std::string bleibt?
Wie soll diese Typumwandlung denn aussehen?
-
Die Fragestellung ist immernoch unklar! Zeig uns doch einfach mal was Du machen willst...
Was die netten Menschen in diesem Thread Dir versuchen zu sagen:
void funktion(std::string xxx) { // xxx IST und WIRD IMMER string bleiben. // es sei denn __DU__ wandelst es in irgendwas anderes um // aber dann weisst __DU__ doch wohl auch, welchen Typ "irgendwas anderes" hat, oder? }
-
Dkpingi schrieb:
...wenn ich meiner Klasse einen string übergebe ... muss ich erstmal feststellen ob das ein string ist....
Da hast DU einen Knoten im Denken: Wenn es ein string ist, brauchst Du das nicht mehr zu prüfen (und "alles" ist ein String
).Du willst wahrscheinlich feststellen, ob man aus diesem String eine Ganzzahl (z.B.) extrahieren kann - und dafür sind die stream-Operatoren << und >> da.
Gruß,
Simon2.
-
Simon2 schrieb:
Dkpingi schrieb:
...wenn ich meiner Klasse einen string übergebe ... muss ich erstmal feststellen ob das ein string ist....
Da hast DU einen Knoten im Denken: Wenn es ein string ist, brauchst Du das nicht mehr zu prüfen (und "alles" ist ein String
).Du willst wahrscheinlich feststellen, ob man aus diesem String eine Ganzzahl (z.B.) extrahieren kann - und dafür sind die stream-Operatoren << und >> da.
Gruß,
Simon2.
Stimmt ich habe grad einen Denkfehler.Das mit dem extrahieren der Ganzzahl klingt nach dem was ich wollte allerdings steht in meinem Lehrbuch irgendetwas von
string str="123"; int intzahl; intzahl=atoi(str.c_str());das wollte ich tun sobald ich festgestellt habe ob man nun Ganzzahlen extrahieren kann oder nicht.
-
Dkpingi schrieb:
...
Sowas macht man besser mit std::stringstream
#include <iostream> #include <sstream> #include <string> #include <limits> std::string str = "20"; std::stringstream strstr; strstr << str; int zahl; if(!(strstr >> zahl)) { std::cerr << "Fehler: " << str << " ist keine int.\n"; }
-
Ja ich denke das trifft es.
Vielen Dank an alle.
-
Simon2 schrieb:
Dkpingi schrieb:
...wenn ich meiner Klasse einen string übergebe ... muss ich erstmal feststellen ob das ein string ist....
Da hast DU einen Knoten im Denken: Wenn es ein string ist, brauchst Du das nicht mehr zu prüfen (und "alles" ist ein String
).Aber was wenn ich mal einen string mal einen vector und mal was anderes übergebe?
-
c++ fan 2008 schrieb:
Aber was wenn ich mal einen string mal einen vector und mal was anderes übergebe?
Wenn der Parameter vom Typ std::string ist, dann kannst Du keinen std::vector übergeben.
-
Die Klasse war für eine Übungsaufgabe zum Thema oop.
Dort stand nur,dass man string und int Werte übergeben können muss.
-
Dkpingi schrieb:
Die Klasse war für eine Übungsaufgabe zum Thema oop.
Dort stand nur,dass man string und int Werte übergeben können muss.Dann war vielleicht Überladung gemeint:
class MyClass { MyClass(int param); //wird bei MyClass mc(0) aufgerufen MyClass(const std::string& param); //wird bei MyClass mc("0") aufgerufen };Als konkretes Beispiel könnte z.B. eine Klasse für Uhrzeiten dienen, bei der man einmal eine Uhrzeit-Objekt über h, m und s als Integer anlegen kann:
ClockTime ct(14, 30, 13)
und einmal z.B. über einen String:
ClockTime ct("14:30:13")Mit nur einem Konstruktor geht das aber nicht. Man muss einen für die Integers haben, und einen anderen für die Strings.
-
Danke für den Tipp die Klasse ist tatsächlich für Uhrzeiten
.