как преобразовать массив символов в массив wchar_t?

char cmd[40];
driver = FuncGetDrive(driver);
sprintf_s(cmd, "%c:\\test.exe", driver);

Я не могу использовать cmd в

sei.lpFile = cmad;

таким образом, как преобразовать char массив к wchar_t массив?

10
задан Donald Duck 23 January 2017 в 15:01
поделиться

3 ответа

Из 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;
}
16
ответ дан 3 December 2019 в 14:10
поделиться

Эта ссылка содержит примеры для многих типов преобразования строк, включая интересующий вас (ищите mbstowcs_s)

0
ответ дан 28 October 2019 в 03:57
поделиться

Из вашего примера с использованием swprintf_s будет работать

wchar_t wcmd[40];
driver = FuncGetDrive(driver);
swprintf_s(wcmd, "%C:\\test.exe", driver);

Обратите внимание, что C в % C должен быть написан с прописными буквами, поскольку драйвер является обычным символом а не wchar_t.
Передача вашей строки в swprintf_s (wcmd, "% S", cmd) также должна работать

0
ответ дан 3 December 2019 в 14:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: