PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Einen float-Wert an einen String hängen



axeljaeger
23-07-2002, 12:52
Ich hab eine Bibliothek, die einen String rendert (renderString(char *)).

Ich möchte gerne den String "FPS: " und eine Zahl dahinter rendern. Also muß ich die Zahl als String an den String anhängen. Ich hab da schon verschiedene Versuche gemacht, aber keiner wollte funktionieren:

1. Versuch:

float fps;
string dst = "FPS";
dst.append(fps); <-- Das mag der Compiler nicht
renderString(dst.c_str());

2. Versuch:

float fps;
string dst = "FPS";
dst += fps; <-- Das mag der Compiler nicht
renderString(dst.c_str());

3. Versuch:

float fps;
char* dst;
sprintf(dst, "FPS: %f", fps); <-- Segfault

4. Versuch:

float fps;
char* dst = new char[100];
sprintf(dst, "FPS: %f", fps); <-- Segfault

Langsam fält mir nichts mehr ein, aber so etwas muß doch gehen?!

anda_skoa
23-07-2002, 13:02
versuch es so wie es tkortkamp für einen Integer vorgezeigt hat:

http://www.mrunix.de/forums/showthread.php?s=&threadid=29446&highlight=stringstream

Ciao,
_

DerLipper[TuX]
26-07-2002, 10:00
Original geschrieben von axeljaeger
Ich hab eine Bibliothek, die einen String rendert (renderString(char *)).

Ich möchte gerne den String "FPS: " und eine Zahl dahinter rendern. Also muß ich die Zahl als String an den String anhängen. Ich hab da schon verschiedene Versuche gemacht, aber keiner wollte funktionieren:

1. Versuch:

float fps;
string dst = "FPS";
dst.append(fps); <-- Das mag der Compiler nicht
renderString(dst.c_str());

2. Versuch:

float fps;
string dst = "FPS";
dst += fps; <-- Das mag der Compiler nicht
renderString(dst.c_str());

3. Versuch:

float fps;
char* dst;
sprintf(dst, "FPS: %f", fps); <-- Segfault

4. Versuch:

float fps;
char* dst = new char[100];
sprintf(dst, "FPS: %f", fps); <-- Segfault

Langsam fält mir nichts mehr ein, aber so etwas muß doch gehen?!

zu 1. mit append kannst du nur weitere strings addieren.

zu 2. siehe 1. += operator wird intern auch nur append aufrufen.

zu 3. segfault kommt weil du dst nicht initialisiert hast. -> dst == NULL !!

zu 4. würde klappen wenn du char dst[100] nehmen würdest und nicht einen pointer auf char[100]...pointer, des c-programmierers liebster Freund :D

Gruß,
Marko