c ++ - Sådan konverteres fra CString til PCWSTR

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har følgende metode:


    VariantFromString(strXMLPath ,vXMLSource); 


og underskriften af ​​metoden er:


HRESULT VariantFromString(PCWSTR wszValue, VARIANT &Variant);


Nu mens jeg passerer en CString som nedenfor:


char cCurrentPath[FILENAME\_MAX];

        if (!GetCurrentDir(cCurrentPath, sizeof(cCurrentPath)))
            {
                return errno;
            }
CString strXMLPath = cCurrentPath;
strXMLPath += XMLFILE;
VariantFromString(strXMLPath ,vXMLSource);


Jeg får fejlen: Kan ikke konverteres fra CString til PCWSTR

Bedste reference


Du skal virkelig bruge Unicode (wchar\_t i stedet for char). Det er sådan, operativsystemet opererer internt, og ville forhindre at skulle konstant konvertere mellem char typer som dette.


Men i dette scenario kan du bruge CString::AllocSysString til at konvertere det til en BSTR, som er kompatibel med PCWSTR. Bare sørg for at det bliver befriet med SysFreeString.


[[redigere]]
Du kan for eksempel ændre din funktion til:


VARIANT VariantFromString(const CString& str)
{
    VARIANT ret;
    ret.vt = VT\_BSTR;
    ret.bstrVal = str.AllocSysString();
    return ret;
}