spritf + c++ string = ??????



  • Ich arbeite seit einer Weile an meiner Abschlussarbeit mit SDL. Die Funktion TTF_RenderText_Blended, verlangt eine const char* test;

    Ich weiß dass ich die "sprintf()" verwenden muss. Heute habe ich folgendes ausporbiert, da ich von C auf C++ umgestiegen bin.

    char test[6];
    string sTest = "hello";
    
    sprintf(test, "%s", sTest);
    

    Leider musste ich feststellen, dass dies nicht wirklich funktioniert hatte. Die APP hat sich sofort aufgehängt, so wusste ich gleich, dass irgendetwas nicht stimmen wird mit der sprintf, besser gesagt mit dem string.

    Ich kenne mich mit sprintf nicht wirklich aus. Besser gesagt wie ein C++ String in Wirklichkeit definiert ist. Ich habe mit sprintf bissher nur im Fall von SDL, TTF_RenderText_Blended arbeiten müssen.

    Ich hoffe das ist kein Problem, dass ich hier ebenfalls mein Problem dazu lege, denn ich finde es etwas eigenartig, wenn ich erneut einen neuen Thread zum fast dem selben Thema erstellen wprde 😕



  • Nimm .c_str()



  • std::string hat irgendwo innen drin einen char-Zeiger, der auf den tatsächlichen Inhalt verweist. Wenn du diesen Inhalt nur lesend verwenden willst, kannst du mit c_str() direkt darauf zugreifen. Wenn die SDL etwas benötigt, wo sie reinschreiben darf, schau dir mal die copy() an.

    Kahori schrieb:

    Ich hoffe das ist kein Problem, dass ich hier ebenfalls mein Problem dazu lege, denn ich finde es etwas eigenartig, wenn ich erneut einen neuen Thread zum fast dem selben Thema erstellen wprde 😕

    Doch, es ist ein Problem - zumal deine Frage herzlich wenig mit dem Thema zu tun hatte, das du kapern wolltest. Zum Glück gibt es für jedes Problem eine Lösung 😃



  • Ah dankeschön hab das grad etwas verändert und es geht 🙂
    Das ist sogar weit besser wie meine Lösung zu vor wegen der .size 🙄

    test = "einfach mal testen";
    justTest = new char[test.size()+1];
    strcpy(justTest, test.c_str());
    

Anmelden zum Antworten