Страницы

Поиск по вопросам

четверг, 9 января 2020 г.

Как присвоить wchar[256] переменную?

#cpp #visual_cpp


Есть текстовый файл в котором хранится ссылка к примеру (https://ru.stackoverflow.com)
какая там ссылка неизвестна. Я считываю ссылку из файла и записываю её в переменную line.

string line;
ifstream writeT("test.txt");
writeT.is_open();
getline(writeT, line);


Далее мне нужно как то присвоить значение переменной line в WCHAR, я знаю как присвоить
текст L"sometext". Как можно присвоить WCHAR webAddress[256] значение переменной line
не зная ссылку?

WCHAR webAddress[256] = ;
HRESULT hr = URLDownloadToFile(NULL, webAddress, szFileName, 0, NULL);

    


Ответы

Ответ 1



Если там действительно ссылка, то там набор символов ASCII, и можно просто написать std::wstring wline(line.begin(), line.end());

Ответ 2



Предложенный до меня ответ подходит только для ASCII строк. Я рассмотрю общий случай, когда входная строка содержит не только ASCII-символы, но и, к примеру, кириллицу. Предположим, у вас входной файл в кодировке UTF-8. Вам нужно конвертировать строку в кодировку UTF-16, понятную функциям WinAPI. Это можно сделать с помощью WinAPI функции MultiByteToWideChar: std::string line; // ... пропущено WCHAR webAddress[256]; if (MultiByteToWideChar(CP_UTF8, 0, line.c_str(), line.size() + 1, webAddress, 256)) { HRESULT hr = URLDownloadToFileW(NULL, webAddress, szFileName, 0, NULL); }

Комментариев нет:

Отправить комментарий