Wie benutzt man wsprintf?
-
ja, das klappt! Aber: sinnd der sache ist doch, das ganze generisch ist, oder? Also was muss ich schreiben, wenn ich will das mein Text je nach dem, ob UNICODE und _UNICODE definiert sind, als ascii oder als wide interpretiert wird?
Ich sehe gerade, könnte es _T(...) sein?
-
Wenn du das ganze generisch haben willst dann musst du für Strings das _T() Makro verwenden. Die generischen Makros für Funktionen sind in den jeweiligen Funktionsbeschreibungen in der MSDN zu finden.
-
wsprintf ist keine reine Unicode-Version, wenn kein Unicode definiert ist arbeitet sie auch mit "char"...
-
Genau! Die reine UNICODE version heißt wsprintfW und wird mittels Makro immer aufgerufen, wenn UNICODE definiert ist und man wsprintf benutzt!
-
Muss den Topic nochmal aufrollen...
TCHAR szBuffer[100]; int i=4; wsprintf(szBuffer, _T("%d"), i); basic_string<TCHAR> a; for (int j=0;szBuffer[j];++j) a[j]=szBuffer[j]; MessageBox(hwnd,a.c_str(),_T("Testbox"),0);
Beim kompilieren kommt in der message Box 4 und dann unverständliche (Chinesische?) Zeichen! Aber es geht noch weiter:
basic_string<TCHAR> b; b+=a; TextOut(hdc, 0, 0, b.c_str(), b.size());
Keine Ausgabe! WIESO DAS!
-
TCHAR szBuffer[100]; int i=4; wsprintf(szBuffer, TEXT("%d"), i); basic_string<TCHAR> a(szBuffer); MessageBox(hwnd,a.c_str(),TEXT("Testbox"),0);
-
@DUMM: es klappt! Aber wiso
Müssten da net noch en haufen "nixzeichen" sein?
-
Warum? wsprintf 0 terminiert den buffer doch.
-
OK, beantworte mir nch eine Frage:
TCHAR szBuffer[100]; double d=4.15; wsprintf(szBuffer, TEXT("%f"), d); basic_string<TCHAR> a(szBuffer); MessageBox(hwnd,a.c_str(),TEXT("Testbox"),0); //Ausgabe:f??
-
wsprintf unterstützt keine Fließkommazahlen.
-
Nimm dazu _stprintf aus tchar.h oder benutze C++ Stringstreams.