Konvertieren von std::string in LPCSTR und LPWSTR
Konvertieren eines std::string in ein LPCSTR (ein langer Zeiger auf eine konstante Zeichenfolge) ist ein relativ unkomplizierter Prozess. Sie können dies tun, indem Sie die c_str()-Methode für das std::string-Objekt aufrufen, die einen const char *-Wert zurückgibt, den Sie dann einem LPCSTR zuweisen können.
Die Dinge werden jedoch etwas komplizierter, wenn Konvertieren eines std::string in einen LPWSTR, der ein langer Zeiger auf einen (breiten) Unicode-String ist. Dazu müssen Sie die Klasse _bstr_t verwenden, eine Vorlagenklasse, die zum Konvertieren zwischen verschiedenen String-Typen verwendet werden kann.
Hier ist ein Beispiel dafür, wie Sie einen std::string konvertieren können zu einem LPWSTR mithilfe der Klasse _bstr_t:
#include <string> #include <comdef.h> int main() { std::string str = "Hello world"; _bstr_t bstr(str.c_str()); // Now you have an LPWSTR that you can use. LPWSTR wide_str = bstr.GetBSTR(); return 0; }
LPSTR, LPCSTR, LPWSTR und LPCWSTR verstehen
Die Namen dieser verschiedenen Zeichenfolgentypen können verwirrend sein, aber wenn man sie aufschlüsselt, werden sie viel einfacher zu verstehen.
Wie Sie sehen, besteht der einzige Unterschied zwischen diesen Typen darin, ob sie Zeiger auf konstante Zeichenfolgen sind oder nicht. Sie können den L-Teil (lang) der Namen ignorieren – er ist ein Überbleibsel von 16-Bit-Windows.
Das obige ist der detaillierte Inhalt vonWie konvertiere ich einen std::string in LPCSTR und LPWSTR?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!