Utiliza el parámetro lpMultiByteStr [out] creando una nueva matriz de caracteres. A continuación, pasa esta matriz de caracteres para que se llene. Solo necesita inicializar la longitud de la cadena + 1 para que pueda tener una cadena con terminación nula después de la conversión.
Aquí hay un par de útiles funciones de ayuda para usted, que muestran el uso de todos los parámetros.
#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;
}
-
en cualquier momento en la documentación cuando se ve que tiene un parámetro que es un puntero a un tipo, y ellos dirán que es una variable de salida, tendrá que crear ese tipo, y luego pasa un puntero a él. La función usará ese puntero para llenar su variable.
para que pueda entender esto mejor:
//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;
}
¿Hay alguna razón por la que parezca que hace preguntas pero no acepta respuestas? Por lo general, es una buena práctica en estos sitios recompensar las buenas respuestas con comentarios en reconocimiento por el tiempo que las personas invierten en responder su pregunta. A continuación encontrará algunas respuestas muy buenas ... (empuje) –