Problem mit Typ-Umwandlung
-
Hi Leute, ich bin noch relativ neu bei der Sache. Ich suche einen Weg einen int-Wert direkt in einen string umzuwandeln. Und zwar nicht ueber eine Funktion oder ein Unterprogramm, sondern durch mehr oder weniger einen Befehl.
Ich dank euch schonmal im voraus.
Gangrel
-
-
So kann man es machen, aber das ist ja eigentlich genau das was ich nicht will. Es gibt also keinen direkten Befehl wie in anderen Sprachen, so dass ich ein int direkt als string uebernehmen kann?
-
in C++ gibt es keine befehle.
was stoert dich daran:
template<typename T> string IntToString(T i) { ostringstream temp; temp << i; return temp.str(); }
dann kannst du immer:
string s=IntToString(7);
schreiben
-
Ich hatte gehofft man koenne etwas in folgender Art machen:
string a,c;
int b;
cout << c=static_cast <string> (a+b) <<endl;ich will mir eben nach Moeglichkeit den aufruf und das schreiben dieses ganzen anderen Krams sparen wenn ich es mit etwas so einfachen wie static_cast loesen koennte.
-
was stoert dich daran:
C/C++ Code:
template<typename T>
string IntToString(T i)
{
ostringstream temp;
temp << i;
return temp.str();
}Mich stört der Name. ich kann jedes beliebige Objekt, dass den <<operator für ostreams überladen hat übergeben, der Name sugeriert aber, dass ich nur Ints verwenden könnten.
template<typename T, typename U> T my_own_cast(const U & u) { ostringstream temp; temp << u; T t; temp >> t; return t; }
Dann kann ich immer schreiben
string s = my_own_cast<string>(6); int i = my_own_cast<int>(s);
-
@Helium:
ich habe da nicht sonderlich viel nachgedacht. war ja nur n code schnipsel@Gangrel:
dann schau dir mal von boost (www.boost.org) den "lexical cast" an
-
Hi Leute, ich hab ne Moeglichkeit gefunden .
Dachte sie interessiert euch auch; es geht ueber "atoi" :string s= ("123.456");
int i= atoi (s); //Daraus folgt ein i mit dem Wert 123 !
-
das ist doch genau der Weg andersrum und dann auch noch mit clib Funktionen
-
string s= ("123.456"); int i= atoi (s); //Daraus folgt ein i mit dem Wert 123 !
Kann mir mal einer erklären, wieso das geht? IMHO müsste es heißen:
string s= ("123.456"); int i= atoi (s.c_str());
Allerdings verstehe ich nicht, was daran besser ist, als an
string s= ("123.456"); int i= boost::lexical_cast<int>(s);
Mein cast ist quasi das selbe, nur nicht so sicher. Der lexical_cast wirft im Fehlerfall eine Exception.