unsigned char in stringstream: Warum merkwürdiges Verhalten?
-
Ich habe folgende Funktion:
template<class T> string stringify(const T& val) { ostringstream ss; ss << val; return ss.str(); }Mit doubles, ints etc. funktioniert das konvertieren in Strings auch einwandfrei, bei "unsigned char" jedoch nicht.
unsigned char b = 100; string str = stringify(b); // Unerwuenschtes ErgebnisErst wenn ich explizit nach int caste geht es:
unsigned char b = 100; string str = stringify((int)b); // Geht, str == "100"Mag mir einer erklären, warum das so ist :xmas1:

-
char ist, wie der Name schon sagt, ein Zeichen, keine Zahl. Deswegen interpretiert der Strigstram es auch nicht als Zahl, sondern als einzelnes Zeichen, also wahrscheinlich bei dir "d".Wenn du explizit nach int castest, machst du klar dass du das nicht als Zeichen, sondern Zahl interpretiert haben willst.
-
War verständlich, danke!
-
Info: Es gibt inzwischen auf ein to_string