Vous utilisez le paramètre lpMultiByteStr [out] en créant un nouveau tableau char. Vous passez ensuite ce tableau char pour le remplir. Vous avez seulement besoin d'initialiser la longueur de la chaîne + 1 afin que vous puissiez avoir une chaîne terminée par zéro après la conversion.
Voici quelques fonctions utiles pour vous, elles montrent l'utilisation de tous les paramètres.
#include <string>
std::string wstrtostr(const std::wstring &wstr)
{
// Convert a Unicode string to an ASCII string
std::string strTo;
char *szTo = new char[wstr.length() + 1];
szTo[wstr.size()] = '\0';
WideCharToMultiByte(CP_ACP, 0, wstr.c_str(), -1, szTo, (int)wstr.length(), NULL, NULL);
strTo = szTo;
delete[] szTo;
return strTo;
}
std::wstring strtowstr(const std::string &str)
{
// Convert an ASCII string to a Unicode String
std::wstring wstrTo;
wchar_t *wszTo = new wchar_t[str.length() + 1];
wszTo[str.size()] = L'\0';
MultiByteToWideChar(CP_ACP, 0, str.c_str(), -1, wszTo, (int)str.length());
wstrTo = wszTo;
delete[] wszTo;
return wstrTo;
}
-
Chaque fois que dans la documentation quand vous voyez qu'il a un paramètre qui est un pointeur sur un type, et ils vous diront qu'il est une variable, vous voulez créer ce type, puis passez-y un pointeur. La fonction utilisera ce pointeur pour remplir votre variable.
Alors vous pouvez mieux comprendre cela:
//pX is an out parameter, it fills your variable with 10.
void fillXWith10(int *pX)
{
*pX = 10;
}
int main(int argc, char ** argv)
{
int X;
fillXWith10(&X);
return 0;
}
Y a-t-il une raison pour laquelle vous semblez poser des questions mais n'accepter aucune réponse? C'est généralement une bonne pratique sur ces sites de récompenser les bonnes réponses avec des commentaires en reconnaissance du temps que les gens investissent dans la réponse à votre question. Vous avez quelques très bonnes réponses ci-dessous ... (nudge) –