Hmm int in string umwandeln ! Fehler !



  • Hallo
    Bei diesem Code :

    long int memor = get_mem_total();
       stringstream ss;
       ss<<memor;
       string memory_id;
       ss>>memory_id;
       textctrl2->SetValue(memory_id);
    

    kommt dieser Fehler !

    /home/huseyin/SystemInfs/base.cpp|51|Fehler: keine passende Funktion für Aufruf von »wxTextCtrl::SetValue(std::string&)«|
    /home/huseyin/SystemInfs/base.cpp|51|Anmerkung: Kandidat ist:|
    /usr/include/wx-2.8/wx/textctrl.h|303|Anmerkung: virtual void wxTextCtrlBase::SetValue(const wxString&)|
    /usr/include/wx-2.8/wx/textctrl.h|303|Anmerkung:   keine bekannte Umwandlung für Argument 1 von »std::string {aka std::basic_string<char>}« nach »const wxString&«|
    ||=== Build finished: 4 errors, 0 warnings ===|
    Hmm habe es ja in string umgewandelt arbeite mit wxWidgets sollte aber 
    unwichtig sein!
    


  • textctrl2->SetValue(wsString( memory_id.begin(), memory_id.end() ));
    

    oder so ähnlich - je nach dem, was für konstruktoren wsString bereitstellt...

    bb



  • Schau doch einfach in die Dokumentation. Ein bischen selbstständig musst du bei GUI-Frameworks schon sein, sonst fragst du jeden Tag.

    Also ...

    textctrl2->SetValue(wxString::Format("%d", get_mem_total()));
    

    Sollte machen was du willst.



  • Wenn dein Compiler schon entsprechenden C++11 Support hat, könntest du außerdem gleich std::to_string verwenden.



  • Jetzt kommt dieser Fehler :

    /home/huseyin/SystemInfs/base.cpp|51|Fehler: keine passende Funktion für Aufruf von »wxString::Format(const char [3], long int)«|
    /home/huseyin/SystemInfs/base.cpp|51|Anmerkung: Kandidat ist:|
    /usr/include/wx-2.8/wx/string.h|1208|Anmerkung: static wxString wxString::Format(const wxChar*, ...)|
    /usr/include/wx-2.8/wx/string.h|1208|Anmerkung:   keine bekannte Umwandlung für Argument 1 von »const char [3]« nach »const wxChar* {aka const wchar_t*}«|
    ||=== Build finished: 4 errors, 0 warnings ===|
    

    Also ich such ja nach einer funktion bei der man in TextCtrl direkt integer ausgeben kann aber finden tu ich nix ...



  • Die Fehlermeldung sagt dass dein const char* und in const wxChar* konvertierbar ist und dass wxChar ein wchar_t ist.
    wchar_t ist ein Unicode-String und bedeutet dass du vor den String ein L hängen musst damit der Compiler den richtigen String generiert (L"Hallo Welt").

    Wenn dein Compiler schon entsprechenden C++11 Support hat, könntest du außerdem gleich std::to_string verwenden.

    in std::string konvertieren und dann gleich in das nächste Stringformat? Besser nicht. 😉



  • Also wie soll ich bei der Variable ein L vorne dran machen?



  • Ja, der String selbst soll ein Widechar-String sein.

    textctrl2->SetValue(wxString::Format(L"%d", get_mem_total()));
    

    Am Besten packst du alle Strings, die du mit wxWidgets benutzt, in ein

    wxT()
    

    ein, dann wird das automatisch angepasst.
    Also:

    textctrl2->SetValue(wxString::Format(wxT("%d"), get_mem_total()));
    


  • Vielen Dank hat geklappt hab jetzt ander Fehler aber hat nichts mehr mit dem zu tun.

    Liebe Grüsse


Anmelden zum Antworten