Wann casts, wann "atoi" etc.?
-
Hallo,
Ich hätte da ein paar Fragen:

1.Sollte man Casts oder Funktionen wie "atoi" nehmen? Wo liegt der Unterschied?
2.if(unterschied){Ein Beispiel?}
3.Was wird bei solchen Sachen oft falsch gemacht, ist kein Standart?
4.Warum gibt es "xy.c_str()"? (Bezieht sich auch auf [1])Danke!
-
dermitdemproblem schrieb:
1.Sollte man Casts oder Funktionen wie "atoi" nehmen? Wo liegt der Unterschied?
klar kann man das nehmen, wozu gibt es das denn, wenn man es nicht benutzen sollte?
was meinst du mit 'unterschied'?

-
Unterschied meint hier: Unterschiedliche Ergebnisse:
char x='
';=>int
Cast: "1"
atoi: "?"
-
dermitdemproblem schrieb:
...
1.Sollte man Casts oder Funktionen wie "atoi" nehmen? Wo liegt der Unterschied?
2.if(unterschied){Ein Beispiel?}
3.Was wird bei solchen Sachen oft falsch gemacht, ist kein stan****?
4.Warum gibt es "xy.c_str()"? (Bezieht sich auch auf [1])Danke!
Äh ... ein cast macht NIE dasselbe wie atoi(). Die beiden haben nichts miteinander zu tun:
- cast lässt den Compiler oder die runtimeLib eine Variable anders interpretieren.
- atoi() errechnet zur Laufzeit aus einer Variable (Typ char*) den Wert einer anderen (Typ int)
dermitdemproblem schrieb:
...
3.Was wird bei solchen Sachen oft falsch gemacht, ...Der häufigste Fehler ist, das man nicht versteht, was man da tut.

Sagen wir mal so: Wenn Du meinst, etwas mit cast ODER mit atoi() lösen zu können, ist atoi() immer die richtige Wahl.dermitdemproblem schrieb:
...
4.Warum gibt es "xy.c_str()"? (Bezieht sich auch auf [1])...Damit man C-APIs (und zu der gehört auch atoi()) füllen kann ... die kennen nämlich keine strings (gibt's nur in C++) und c_str() liefert eben einen dazu passenden "C-String" (also das Teil, das auch die C-API versteht).
Gruß,
Simon2.
-
dermitdemproblem schrieb:
1.Sollte man Casts oder Funktionen wie "atoi" nehmen? Wo liegt der Unterschied?
In C++ verwendet man besser std::stringstream's.
dermitdemproblem schrieb:
2.if(unterschied){Ein Beispiel?}
Steht da ja schon
.dermitdemproblem schrieb:
3.Was wird bei solchen Sachen oft falsch gemacht, ist kein stan****?
Die Frage ist aber sehr allgemein. Also man darf zum Beispiel keine ungültigen Zeiger bzw. den NULL-Zeiger übergeben
.
Funktion (etc.) die nicht standard-konform sind, beginnen i.d.R. mit einem Unterstrich.dermitdemproblem schrieb:
4.Warum gibt es "xy.c_str()"? (Bezieht sich auch auf [1])
Um den aktuellen Inhalt eines std::string-Objekts in einen C-String umzuwandeln.
EDIT: Zu spät *g* ...
-
dermitdemproblem schrieb:
Unterschied meint hier: Unterschiedliche Ergebnisse:
ja, ach so.
das liegt daran, dass ein cast etwa in einen anderen datentyp umwandelt, während 'atoi' versucht, aus einem string mit ziffern eine zahl herauszulesen.
beides hat miteinander nichts zu tun...

edit: zu lahm....
-
DANKE, hab mir ja so was in der Richtung gedacht, wollte aber sicher gehen...
Ihr habt mir sehr geholfen, werd euch weiterhin weiterempfehlen!
