Sie verwenden den Parameter lpMultiByteStr [out], indem Sie ein neues char-Array erstellen. Dann übergeben Sie dieses Char-Array, um es gefüllt zu bekommen. Sie müssen nur die Länge der Zeichenfolge + 1 initialisieren, damit nach der Konvertierung eine nullterminierte Zeichenfolge angezeigt wird.
Hier sind ein paar nützliche Hilfsfunktionen für Sie, sie zeigen die Verwendung aller Parameter.
#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;
}
-
Immer in der Dokumentation, wenn Sie sehen, dass es einen Parameter aufweist, der ein Zeiger auf einen Typ ist, und sie sagen, es eine aus Variable ist, werden Sie diese Art zu schaffen, und dann einen Zeiger darauf übergeben. Die Funktion wird diesen Zeiger verwenden, um Ihre Variable zu füllen.
So kann man dies besser verstehen:
//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;
}
Gibt es einen Grund, warum Sie Fragen zu stellen scheinen, aber keine Antworten akzeptieren? Es ist normalerweise eine gute Übung auf diesen Seiten, gute Antworten mit einem Feedback zu belohnen, in Anerkennung der Zeit, die die Leute investieren, um Ihre Frage zu beantworten. Sie haben unten ein paar sehr gute Antworten ... (Nudge) –