Unsigned Long in String umwandeln
-
Ich habe bisher eine Funktion aus dem Internet benutzt, die mir zwar einen String liefert, aber mit führenden Nullen, weil man in der Parameterliste die Länge des Strings angeben muss. Aber das weiss ich doch vorher nicht. Der Code:
void LongToString(unsigned long value, int length, char* s) { int i; for (i=0;i<length;i++) { s[length-i-1]=(value%10)+48; value=value/10; } s[length]='\0'; }
Geht das auch einfacher und direkter?
-
Ja, viel einfacher, wenn man's in C++ macht:
#include <sstream> string long_to_string(unsigned long value) { std::ostringstream stream; stream << value; return stream.str(); }
Oder aber mit sprintf in C...
-
Danke, soweit so gut, aber nun bekomme ich das Resultat nicht mit AfxMessageBox ausgegeben, weil "keiner der beiden Overloads einen Typ std::basic_string<...> konvertieren könne". Hmmmm...
EDIT: Erledigt. Die Unterfunktion .c_str() hilft beim konvertieren in CString
-
Dafür bietet ein String den Member "c_str()":
string txt = "der Wert ist " + long_to_string(value); AfXMessageBox(txt.c_str());
-
Die Klasse string hat die Methode c_str(), die liefert einen C-String für Betriebssystemaufrufe (und andere APIs natürlich)
AfxMessageBox( ... long_to_string(129000).c_str() ... );
-
Hehe, alle zur selben Zeit, danke trotzdem