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

StackOverflow https://stackoverflow.com/questions/159442

  •  03-07-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Другие советы

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

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

MSDN

TCHAR — это определение типа, специфичное для Microsoft, для char или wchar_t (широкий символ).

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

В этом посте также есть несколько ответов, особенно если вы ищете кроссплатформенное решение:

Преобразование UTF8 в/из широких символов в STL

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top