Problem mit c_str()



  • @surf.: Irgendwie kann ich den Zusammenhang zwischen deinen Postings und diesem Thread nicht so recht erkennen 🙄

    Außerdem hat CMatt doch bereits geschrieben, warum der ganz zu Beginn gepostete Code nicht funktioniert 😉



  • sag mir ob das geht!!
    cu

    nö, 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!!
    cu

    nö, 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 Beispiel

    testfunktion().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). 🙄



  • @flenders

    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 🤡


Anmelden zum Antworten