Problem mit c_str()
-
sag mir ob das geht!!
cunö, geht nicht, siehe meinen post oben
:p
-
nö.. jetzt geht's aber
:string testfunktion() { string sAusgabe="Hallo du da!"; return sAusgabe; } MessageBox(0,testfunktion().c_str(),"Test",MB_OK);
-
CMatt schrieb:
sag mir ob das geht!!
cunö, geht nicht, siehe meinen post oben
:p#include <string> using namespace std; //Beispiel string testfunktion() { string sAusgabe; sAusgabe="Hallo du da!"; return sAusgabe; } //[..] //Aufruf der Messagebox MessageBox(0,testfunktion().c_str(),"Test",MB_OK);probier das mal, ich kann mich erinnern das es glaubi so funzte!
cu
-
thx für eure ganzen Antworten!
Wisst ihr vielleicht, wie ich jetzt zum Beispieltestfunktion().c_str();in einem Fenster per TextOut(..) ausgeben kann, ohne dass
die Ausgabe "abgehackt" wird oder noch etwas angehängt wird?euer blubbblubb

-
blubbblubb schrieb:
nö.. jetzt geht's aber
:string testfunktion() { string sAusgabe="Hallo du da!"; return sAusgabe; } MessageBox(0,testfunktion().c_str(),"Test",MB_OK);Ich denke aber nicht, dass das immer zuverlässig so funktioniert

Zu deinem 2. Problem: Du musst einfach im letzten Parameter (cbString) von TextOut die richtige Länge angeben

-
Schau in der Hilfe zu TextOut, wie die Funktion aufgerufen wird. Wenn es nicht funktioniert, kannst du immer noch hier fragen (und deinen Ansatz posten).

-
Ich denke aber nicht, dass das immer zuverlässig so funktioniert

string testfunktion() { string sAusgabe="Hallo du da!"; return sAusgabe; } MessageBox(0,testfunktion().c_str(),"Test",MB_OK);Wieso soll das nicht immer zuvelässig funktionieren ??

Gruß
-
flenders schrieb:
Zu deinem 2. Problem: Du musst einfach im letzten Parameter (cbString) von TextOut die richtige Länge angeben

Öhm ja...
mit welcher Funktion bekomm' ich denn die Länge?
Dies hier klappt nur bei 2,4,6,8,... chars:
const char * cAusgabe = testfunktion().c_str(); TextOut(hdc,1,1,cAusgabe,sizeof(cAusgabe) * 2);
-
blubbblubb schrieb:
const char * cAusgabe = testfunktion().c_str(); TextOut(hdc,1,1,cAusgabe,sizeof(cAusgabe) * 2);cAusgabe ist ein "const char*", also ein Zeiger. Und ein Zeiger hat auf 32-Bit-CPUs nunmal immer 4 Bytes, egal wie groß der String ist, auf den er zeigt. Du suchst std::string::length() oder lstrlen() (wobei ersteres schneller sein dürfte):
string Ausgabe = testfunktion(); TextOut(hdc, 1, 1, Ausgabe.c_str(), Ausgabe.length());
-
Skatepirat schrieb:
Wieso soll das nicht immer zuvelässig funktionieren ??

Das hatte ich aus den Ausführungen von CMatt geschlossen
