TCHAR in char*



  • @chrische5
    Schau dir mal <tchar.h> etwas genauer an, dort gibt es für viele Funktionen, die ein char* erwarten, ein passendes TCHAR* Gegenstück. Für Stringliterale kannst du _T verwenden.
    Und auf die _s Funktionen würde ich persönlich nicht zurückgreifen. Erstens sind sie nicht wirklich sicher, vielleicht sicherer, aber sicher nicht sicher. 🙂 Und zweitens wird man dann mit anderen Compilern bzw. andren stdlib Implementierungen richtig Probleme bekommen. Da würde ich lieber auf das Makro von camper zurückgreifen.



  • Hallo

    Erstmal danke für eure Hilfe. Ich weiss ehrlich geasgt gar nicht, was hier eigentlich das Problem ist. Mit 2003 ging alles super und nun dieser Stress, aber daran kann man ja nur wachsen. Ich weiss gar nicht, an was ich alles noch denken muss. Gib es eine Funktion für std::strings die analog zur Methode c_str() einen solchen String in ein TCHAR* umwandelt?

    chrische



  • Du kannst auch einfach in den Projektoptionen Unicode abschalten und gut is.



  • Nimm std::wstring wenn du eine wchar_t* brauchst.

    Gruß



  • Hallo

    Sorry, dass ich mich hier von Problem zu Problem hangele, aber das ist hier absolutes Neuland für mich. Nun stolpere ich über folgende Fehler:

    Code:

    std::wstring strErrorCode = SDL_GetError();
    

    Fehlermeldung:

    error C2440: 'static_cast' : cannot convert from 'char *' to 'std::wstring'

    Mir ist auch klar, was er will, aber nicht was ich machen kann.

    Ich hoffe, dass das heute nicht den ganzen Tag so weiter geht.

    chrische



  • Die Umstellerei wird nix bringen bei einem Spiel.



  • Hallo

    ............. schrieb:

    Die Umstellerei wird nix bringen bei einem Spiel.

    Was soll das den heißen? Ich würde gerne weiter mit der Klasse arbeiten, in der dieser Zeile steht. Das muss es doch eine Möglichkeit geben auch Fehlermeldung von SDL zu bearbeiten, wenn man std::wstring benutzt.

    chrische



  • Stell doch einfach Unicode aus wenn du es nicht brauchst...

    Gruß



  • Hallo

    FireFlow schrieb:

    Stell doch einfach Unicode aus wenn du es nicht brauchst...

    Gruß

    Dazu folgender Beitrag:

    SideWinder schrieb:

    Weil beim 2005er standardmäßig mit Unicode gearbeitet wird und TCHAR dann nunmal kein char ist sondern wchar_t.

    Gute Möglichkeit a): Du stellst dein Projekt auf Unicode um, machst aus "const char*" ein "const TCHAR*", includierst die <tchar.h> und schreibst vor jeden String ein TEXT("Mein String") bzw. wenn du nur dir sicher bist nur noch für Unicode compilieren zu wollen reicht auch ein: L"MeinStr"

    Schlechte Möglichkeit b): Du verzichtest weiterhin auf die Lösung aller Codepage-Probleme und stellst in den Projekteinstellungen wieder auf MBCS um.

    MfG SideWinder

    Es muss doch ausserdem auch mit UNICODE klappen. Ich habe nur leider keine Ahnung, wie man char* zu std::wstring konvertieren kann.

    chrische



  • chrische5 schrieb:

    Nun stolpere ich über folgende Fehler:

    Code:

    std::wstring strErrorCode = SDL_GetError();
    

    Fehlermeldung:

    error C2440: 'static_cast' : cannot convert from 'char *' to 'std::wstring'

    Mir ist auch klar, was er will, aber nicht was ich machen kann.

    Gibt es ein SDL_GetError, was wchar_t* zurückliefert?
    Ansonsten musst du den String entsprechend umwandeln. Und manchmal kann einem die FAQ Sektion dabei helfen ➡ hier 😉
    :xmas1: :xmas2:


Anmelden zum Antworten