LPWSTR & SysAllocString ???



  • Hallo zusammen,

    ich bin neu hier und blutiger Anfänger, was C++ Programmierung angeht. Ich hoffe, dass ich mit meinem ersten Thread auch ins richtige Forum poste.

    Meine Frage lautet wie folgt:
    Was bedeutet bei dieser Deklaration das "L" vor dem String "customer.csv"?

    LPWSTR pwszTableName =	L"customer.csv";
    

    Etwas später im Code wird auf diese Deklaration wieder Bezug genommen:

    V_BSTR(&(dbProp[0].vValue)) = SysAllocString( L"." );
    

    Was passiert in dieser Zeile ungefähr? Ist das eine Art Platzhalter, Wildcat oder Substitution? 😕



  • Das L bedeutet wide-character.

    Schreibst du nur "abc" hast du 3 ASCII Zeichen, Typ char, jedes ist 8 Bit (1 Byte) groß. Schreibst du L"abc" hast du 3 "wide character" (Zeichen), Typ wchar_t. Was das bedeutet ist nicht festgelegt (von Compiler zu Compiler unterschiedlich).

    char* c = "abc" // ok
    char* c = L"abc" // Fehler, L"abc" ist vom Typ wchar_t
    
    wchar_t* c = "abc" // Fehler, "abc" ist vom Typ char
    wchar_t* c = L"abc" // ok
    

    Falls du Visual Studio nutzt ist wchar_t 16 bit Unicode.



  • Noch als Tip: nimm einfach TCHAR und benutze statt L das Macro _T("dein string"), dann wir je nach Projektkonfiguration das richtige ausgewählt.


Anmelden zum Antworten