Ответ 1
MultiByteToWideChar, но также см. "Несколько из ошибок MultiByteToWideChar" .
Это похоже на симпатичный вопрос софтбола, но мне всегда трудно найти эту функцию, потому что, похоже, существует так много вариаций относительно ссылок на char и tchar.
MultiByteToWideChar, но также см. "Несколько из ошибок MultiByteToWideChar" .
Самый простой способ - использовать макросы преобразования:
TCHAR - специфичный для Microsoft тип typedef для char или wchar_t (широкий символ).
Конверсия в char зависит от того, какая из них она есть. Если TCHAR на самом деле является char, то вы можете сделать простой актерский состав, но если это действительно wchar_t, вам понадобится программа для преобразования между наборами символов. См. Функцию MultiByteToWideChar()
В этом посте также есть несколько ответов, особенно если вы ищете кросс-платформенное решение:
Хотя в этой конкретной ситуации я думаю, что TChar является широким символом, мне нужно будет только преобразовать, если это не так. который я должен проверить как-то.
if (sizeof(TCHAR) != sizeof(wchar_t))
{ .... }
Охлаждающая вещь в том, что оба размера равны - это константы, а это означает, что компилятор будет обрабатывать (и удалять) if(), а если они равны, удалите все внутри фигурных скобок
Вот код CPP, который дублирует _TCHAR * argv [] на char * argn [].
Если вы используете старый код для Windows, просто используйте определение, указанное в коде, как необязательное.
Вы можете поместить условие в свой код
ifdef _UNICODE
{//НУЖНО ТЧАР ШИРОКО CHAR} ELSE {//НУЖНО ТЧАР IS CHAR}
Я понимаю, что это старый поток, но он не получил мне "правильный" ответ, поэтому добавляю его сейчас.
Теперь, как это теперь делается, нужно использовать макрос TEXT. Пример для FindFirstFile в msdn указывает на это. http://msdn.microsoft.com/en-us/library/windows/desktop/aa364418%28v=vs.85%29.aspx