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