String umwandeln
-
std::stringstream (steht bestimmt was in der FAQ dazu) oder am einfachsten boost::lexical_cast benutzen.
-
BorisDieKlinge schrieb:
such mal nach
int atoi(...)
float atof(...)Wir sind hier ein C++ Forum, falls es dir noch nicht bekannt ist.
-
Wie geht das mit dem lexical_cast?
-
Ich hab mir mal eine Funktion augedacht,die einen String aus Zahlen in einen Integer verwandelt.
int StrToInt(char* str) { int *a; int j = strlen(str); int i; a = new int[j]; for(i = 0;i<j;i++) { a[i] = (int)str[i]; a[i] -= 48; } int Zehner = 1; int Zahl = 0; for(i = (j-1);i>=0;i--) { Zahl += a[i]*Zehner; Zehner *= 10; } delete[] a; return Zahl; }
-
Artchi schrieb:
Wir sind hier ein C++ Forum, falls es dir noch nicht bekannt ist.
Trotz dessen sind im C++ auch die C Funktionen vorhanden. Stringstream erscheint mir nicht immer der beste Partner für die Umwandlung zu sein.
Selbstverständlich gehört der Hinweis auf stringstreams hier herein (die man wirklich sehr schön einsetzen kann).
Nicht ganz passend zum Thema (aber ein wenig Hintergrundwissen) liefert das hier:
http://fara.cs.uni-potsdam.de/~kaufmann/?page=GenCppFaqs&faq=IntToString#Answ
-
becks21 schrieb:
Wie geht das mit dem lexical_cast?
http://www.boost.org/libs/conversion/lexical_cast.htm
int zahl = boost::lexical_cast<int>("1234");Falls mal was schief geht, am besten die Exception abfangen, die dann bestimmt auch einen hilfreichen Fehlertext zurück geben kann:
try { int zahl = boost::lexical_cast<int>("1234"); } catch(boost::bad_lexical_cast &ex) { std::cout << ex.what() << std::endl; }
-
Trotz dessen sind im C++ auch die C Funktionen vorhanden.
Ja, aber diese C-Funktionen sind nicht so mächtig. Was ist wenn in dem String doch mal ein Buchstabe drin ist? Wie weiß ich das es schief gegangen ist? Nämlich garnicht, ich bekomme 0 zurück. Sehr schwer zu unterscheiden, wenn der String auch "0000" sein könnte.

-
Wie wandele ich einen String in ein short um?
-
Auch nicht anders als einen String in ein int.
short zahl = boost::lexical_cast<short>("1234");
-
Ja, aber dennoch gehören diese hier her. Die Streams kosten viel Zeit bei der Umwandlung und man sollte daher schon die dazu passenden C Funktionen kennen.
Was wenn die stringstreams mal zum flaschenhals geworden sind ?
Was wenn man garantieren kann das der string nur zahlen beinhaltet ?Zumal sich der Hinweis auf der Ebene des
Wir sind hier ein C++ Forum, falls es dir noch nicht bekannt ist.
bewegt und sagen sollte: "C Funktionen gehören mit zu C++" , nur das ich mir das "falls es Dir noch nicht bekannt ist" sparte
