Подтвердить что ты не робот

Каков самый простой способ преобразования char [] в/из tchar [] в C/С++ (ms)?

Это похоже на симпатичный вопрос софтбола, но мне всегда трудно найти эту функцию, потому что, похоже, существует так много вариаций относительно ссылок на char и tchar.

4b9b3361

Ответ 2

Самый простой способ - использовать макросы преобразования:

  • CW2A
  • CA2W
  • и т.д...

MSDN

Ответ 3

TCHAR - специфичный для Microsoft тип typedef для char или wchar_t (широкий символ).

Конверсия в char зависит от того, какая из них она есть. Если TCHAR на самом деле является char, то вы можете сделать простой актерский состав, но если это действительно wchar_t, вам понадобится программа для преобразования между наборами символов. См. Функцию MultiByteToWideChar()

Ответ 5

Хотя в этой конкретной ситуации я думаю, что TChar является широким символом, мне нужно будет только преобразовать, если это не так. который я должен проверить как-то.

if (sizeof(TCHAR) != sizeof(wchar_t))
{  .... }

Охлаждающая вещь в том, что оба размера равны - это константы, а это означает, что компилятор будет обрабатывать (и удалять) if(), а если они равны, удалите все внутри фигурных скобок

Ответ 6

Вот код CPP, который дублирует _TCHAR * argv [] на char * argn [].

http://www.wincli.com/?p=72

Если вы используете старый код для 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