string to wide character



  • Hallo,

    ich nutze im Moment die GDI+. Um eine Bilddatei(*.bmp) zu öffnen rufe ich folgenden Code auf:

    Image   image(L"C:\\Bild.bmp");
    

    Hart kodieren ist aber öde also wollte ich einen string übergeben.
    Könnte mir jemand sagen, wie ich einen string in einen const WCHAR* konvertieren kann?

    So Sachen wie:

    string Datei = "C:\\Bild.bmp";
    
    Image image(Datei);
    Image image((const WCHAR*)Datei);
    Image image(Datei.c_str());
    

    brachten nicht den gewünschten Erfolg:-(



  • Benutze einfach std::wstring.



  • char *ansistring = ?; // oder TCHAR*
    WCHAR *unistring;
    if (!SHStrDup(ansistring, &unistring)) // shlwapi.h + shlwapi.lib
    {
    ...
       CoTaskMemFree(unistring);
    }
    

    SHStrDup ist super einfach und kurz, mit MultiByteToWideChar geht auch, aber Du brauchst einen output-buffer für unicode-string.



  • Musst du denn unbedingt unter Unicode arbeiten?

    #undef UNICODE
    #undef _UNICODE
    

    hilft,und du brauchst die ganze Konvertiererei mit dem Widechar-Geraffel nicht,sondern kannst ganz normal mit (const) char* usw. arbeiten!



  • Wutz schrieb:

    Musst du denn unbedingt unter Unicode arbeiten?

    #undef UNICODE
    #undef _UNICODE
    

    hilft,und du brauchst die ganze Konvertiererei mit dem Widechar-Geraffel nicht,sondern kannst ganz normal mit (const) char* usw. arbeiten!

    Da würd ich eher den (natürlichen) Ansatz wählen, überall WideChars zu benutzten.



  • Bei der WinAPI-Programmierung bedeutet das benutzen von ASCII eh nur Overhead, da jeder ASCII-String zuerst in einem Wide-String konvertiert wird...



  • Icematix schrieb:

    Bei der WinAPI-Programmierung bedeutet das benutzen von ASCII eh nur Overhead, da jeder ASCII-String zuerst in einem Wide-String konvertiert wird...

    Aha, auch bei Win9x kompatibelen Programmen?



  • Hi

    Jenachdem was es für ein Sys ist. bzw. ob es UNICODE unterstützt! Win95-Win98 hat da nicht wirklich was am Hut. Erst ab NT.

    lowbyte



  • Und wer zur Hölle entwickelt noch für die Krücken? 😉
    In meinen Augen sollte man die Leute schon von XP wegzwingen. Da tut mir die Vorstellung, Leute könnten noch 95/98 laufen haben, in der Seele weh...


Anmelden zum Antworten