sprintf / char* allgemeine fragen
-
hallo,
könnte mir jemand erklären was folgender Code macht?
warum der cast auf (char*) und was bedeutet %02x konkret eigentlich?string foo; foo.resize(6); sprintf((char*) &foo[0], "%02x%02x%02x", r, g, b);
-
cryps schrieb:
warum der cast auf (char*) und was bedeutet %02x konkret eigentlich?
string foo; foo.resize(6); sprintf((char*) &foo[0], "%02x%02x%02x", r, g, b);%02x heißt "hexadezimale Ausgabe, zweistellig, gegebenenfalls mit führenden nullen". r,g,b dürften demnach unsigned chars sein. Der cast auf char erfolgt weil sprintf eben einen char-pointer erwartet, vermutlich wird das benutzt um eventuelle const-ness wegzucasten.
Alles in allem ein ziemlich wüstes C-Konstrukt. Geht in C++ dann eher mit stringstreams:
stringstream sstr; sstr << setw(2) << setfill('0') << r << g << b; string foo = sstr.str();(ungetestet, daher ohne gewähr)
-
herzlichen dank,
werd ich ausprobieren