Я пытался создать функцию, которая преобразует строку в wstring, используя встроенную функцию wsprintf.
По какой-то причине, когда я пытаюсь напечатать результат wstring, ничего не печатается, а когда я пытаюсь выполнить отладку, я вижу, что он содержит буквы на китайском языке (поэтому я предполагаю, что проблема в том, что функция sprintf не добавила начальный нуль- байт для каждого символа по какой-то причине, но я понятия не имею, ПОЧЕМУ).
Может кто-нибудь, пожалуйста, помогите мне разобраться?
Вот что я сделал:
#include <iostream>
#include <string>
using std::wstring;
using std::string;
using std::wcout;
using std::endl;
wstring strToWstr(const string& str);
int main()
{
string str = "test";
wstring wstr = strToWstr(str);
wcout << wstr << endl;
}
wstring strToWstr(const string& str)
{
wchar_t* temp = NULL;
temp = new wchar_t[str.length() + 1]; //allocated string with the right length
swprintf(temp, str.length() + 1, L"%s", str.c_str());
wstring res = temp;
delete[] temp;
return res;
}
wprintf
явно ожидает, что и ввод, и вывод будут широкими. - person Zuodian Hu   schedule 24.04.2020%s
ожидает узкую строку,%ls
будет для широкой строки - person Alan Birtles   schedule 24.04.2020%s
ожидает широкую строку для swprintf - person Alan Birtles   schedule 24.04.2020