Co to jest najprostszym sposobem konwersji char [] do / z TCHAR [] w C / C ++ (ms)?

głosy
18

To wydaje się całkiem softball pytanie, ale zawsze mam trudny czas patrząc w górę tej funkcji ponieważ tam wydają się istnieje tak wiele odmian dotyczące powiązania char i TCHAR.

Utwórz 01/10/2008 o 19:00
źródło użytkownik
W innych językach...                            


8 odpowiedzi

głosy
7

TCHAR jest Microsoft specyficzne dla obu typedef char lub wchar_t (szeroki znak).

Konwersja do char zależy, które z nich jest w rzeczywistości. Jeśli TCHAR jest rzeczywiście char, to można zrobić prosty obsady, ale jeśli to jest naprawdę wchar_t, musisz rutynowe do konwersji pomiędzy zestawami znaków. Zobacz MultiByteToWideChar function ()

Odpowiedział 01/10/2008 o 19:03
źródło użytkownik

Odpowiedział 01/10/2008 o 19:05
źródło użytkownik

głosy
3

Istnieje kilka odpowiedzi w tym poście, jak również, zwłaszcza jeśli szukasz rozwiązania cross-platform:

UTF8 do / z konwersji szerokiej char w STL

Odpowiedział 01/10/2008 o 19:09
źródło użytkownik

głosy
10

Najprostszym sposobem jest użycie makra konwersji:

  • CW2A
  • CA2W
  • itp...

MSDN

Odpowiedział 01/10/2008 o 19:22
źródło użytkownik

głosy
3

Chociaż w tej konkretnej sytuacji myślę, że TCHAR szeroki charakter Muszę tylko zrobić konwersję, jeśli tak nie jest. Muszę sprawdzić, które w jakiś sposób.

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

Świetną rzeczą jest, że oba rozmiary równymi są stałe, co oznacza, że ​​kompilator będzie obsługiwać (i usuwać) if (), a jeżeli są one równe, usuń wszystko wewnątrz szelki

Odpowiedział 01/10/2008 o 19:25
źródło użytkownik

głosy
2

Oto kod, który powiela _TCHAR CPP * argv [] char * argn [].

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

Jeśli przyjęcie starego kodu do systemu Windows, prosta obsługa definiują wymienione w kodzie jako opcjonalne.

Odpowiedział 27/10/2010 o 02:32
źródło użytkownik

głosy
0

Zdaję sobie sprawę, że jest to stary wątek, ale nie zrozumcie mnie „prawo” odpowiedzi, więc dodaję go teraz.

Sposób ten wydaje się być zrobione teraz jest użycie makra TEXT. Przykład dla FindFirstFile w punktach msdn to. http://msdn.microsoft.com/en-us/library/windows/desktop/aa364418%28v=vs.85%29.aspx

Odpowiedział 26/01/2012 o 15:41
źródło użytkownik

głosy
1

Można postawić warunek w kodzie

ifdef _UNICODE

{// lubisz TCHAR jest szeroki CHAR} else {// lubisz TCHAR JEST ZNAK}

Odpowiedział 31/05/2016 o 07:28
źródło użytkownik

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more