Un wchar_t chaîne de 16 bits, un LPSTR est un pointeur vers une chaîne d'octets, définie comme ceci:
typedefchar* PSTR,*LPSTR;
Ce qui est important, c'est que le LPSTR peut être null.
Lors de la traduction de wchar_t à LPSTR, vous devez décider sur un encodage à utiliser. Une fois que vous avez fait, vous pouvez utiliser le WideCharToMultiByte fonction pour effectuer la conversion.
Par exemple, voici comment traduire une large chaîne de caractères en UTF8, à l'aide de chaînes de caractères STL pour simplifier la gestion de la mémoire:
Il convient de noter que le 16 bits est spécifique à windows, et que d'autres de la mise en œuvre peut être (et sera) ont des tailles différentes pour les wchar_t et/ou de char. merci, et pour convertir un LPSTR à wstring comment puis-je faire cela? Oui, c'est vrai - j'ai été à proprement parler avec Windows à l'esprit (depuis qu'il a été marqué comme visual c++). Pour ce faire, vous pouvez utiliser le MultiByteToWideChar fonction. je viens de remplacer WideCharToMultiByte avec MultiByteToWideChar?
Un
wchar_t
chaîne de 16 bits, unLPSTR
est un pointeur vers une chaîne d'octets, définie comme ceci:Ce qui est important, c'est que le LPSTR peut être null.
Lors de la traduction de
wchar_t
àLPSTR
, vous devez décider sur un encodage à utiliser. Une fois que vous avez fait, vous pouvez utiliser leWideCharToMultiByte
fonction pour effectuer la conversion.Par exemple, voici comment traduire une large chaîne de caractères en UTF8, à l'aide de chaînes de caractères STL pour simplifier la gestion de la mémoire:
Vous pouvez utiliser cette fonction pour traduire un
wchar_t*
àLPSTR
comme ceci:merci, et pour convertir un LPSTR à wstring comment puis-je faire cela?
Oui, c'est vrai - j'ai été à proprement parler avec Windows à l'esprit (depuis qu'il a été marqué comme visual c++).
Pour ce faire, vous pouvez utiliser le
MultiByteToWideChar
fonction.je viens de remplacer WideCharToMultiByte avec MultiByteToWideChar?
OriginalL'auteur Frerich Raabe
- Je utiliser ce
ensuite l'utiliser comme mycstr.c_str()
(modifier, car je ne peux pas commenter) c'est la façon dont je l'utilise, et il fonctionne très bien:
OriginalL'auteur Ulterior