char cmd[40];
driver = FuncGetDrive(driver);
sprintf_s(cmd, "%c:\\test.exe", driver);
Ich kann cmd
nicht inWie konvertiert man char-Array in wchar_t Array?
sei.lpFile = cmad;
so, wie char
Array wchar_t
Array zu konvertieren?
char cmd[40];
driver = FuncGetDrive(driver);
sprintf_s(cmd, "%c:\\test.exe", driver);
Ich kann cmd
nicht inWie konvertiert man char-Array in wchar_t Array?
sei.lpFile = cmad;
so, wie char
Array wchar_t
Array zu konvertieren?
Von MSDN:
#include <iostream>
#include <stdlib.h>
#include <string>
using namespace std;
using namespace System;
int main()
{
char *orig = "Hello, World!";
cout << orig << " (char *)" << endl;
// Convert to a wchar_t*
size_t origsize = strlen(orig) + 1;
const size_t newsize = 100;
size_t convertedChars = 0;
wchar_t wcstring[newsize];
mbstowcs_s(&convertedChars, wcstring, origsize, orig, _TRUNCATE);
wcscat_s(wcstring, L" (wchar_t *)");
wcout << wcstring << endl;
}
This link hat Beispiele für viele Arten von String-Konvertierungen, einschließlich die, die Sie interessiert sind (suchen Sie nach mbstowcs_s)
Von Ihrem Beispiel swprintf_s mit funktionieren würde
wchar_t wcmd[40];
driver = FuncGetDrive(driver);
swprintf_s(wcmd, "%C:\\test.exe", driver);
Beachten Sie, dass das C in %C mit Großbuchstaben geschrieben werden muss, da der Treiber ist ein normales Zeichen und kein wchar_t.
Passing Ihre Zeichenfolge swprintf_s (WCMD, "% S", cmd) sollte auch
Verwenden Sie einfach diese Arbeit:
static wchar_t* charToWChar(const char* text)
{
const size_t size = strlen(text) + 1;
wchar_t* wText = new wchar_t[size];
mbstowcs(wText, text, size);
return wText;
}
nicht delete [] wCharPtr
auf dem Rückergebnis rufen Sie vergessen, wenn du bist fertig, sonst ist dies ein Speicherleck, das darauf wartet, dass es passiert, wenn du es ohne Aufräumen anrufst. Oder verwenden Sie einen intelligenten Zeiger wie der folgende Kommentar empfiehlt.
oder Standard-Strings verwenden, wie wie folgt:
#include <cstdlib>
#include <cstring>
#include <string>
static std::wstring charToWString(const char* text)
{
const size_t size = std::strlen(text);
std::wstring wstr;
if (size > 0) {
wstr.resize(size);
std::mbstowcs(&wstr[0], text, size);
}
return wstr;
}
Wenn Sie 'std :: unique_ptr
Da wchar_t bereits einen Standardressourcenmanager mit std :: wstring besitzt, kann er auch anstelle eines intelligenten Zeigers verwendet werden. – Robert
Sie sollten mit Ihrer Quelle verweisen: http://msdn.microsoft.com/en-us/library/ms235631%28VS.80%29. aspx –
Danke. Ich sollte eine Verknüpfung zu wahrscheinlich auch Google :) –
Dies ist die perfekte Antwort – pradeep