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