Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Niektóre języki, na przykład japoński i chiński, mają duże zestawy znaków. W celu obsługi programowania na tych rynkach biblioteka klas Microsoft Foundation (MFC) umożliwia obsługę dużych zestawów znaków w dwóch różnych podejściach:
Unicode,
wchar_toparte na szerokich znakach i ciągach zakodowanych jako UTF-16.Zestawy znaków wielobajtowych (MBCS)
charoparte na pojedynczych lub dwubajtowych znakach i ciągach zakodowanych w zestawie znaków specyficznych dla ustawień regionalnych.
Uwaga
Firma Microsoft zaleca biblioteki MFC Unicode dla wszystkich nowych programowania.
Biblioteki MBCS zostały uznane za przestarzałe w programach Visual Studio 2013 i Visual Studio 2015. Obecnie taka ewentualność nie zachodzi.
Począwszy od programu Visual Studio 2017, biblioteki MBCS nie są już przestarzałe i nie generują ostrzeżeń o wycofaniu.
Obsługa MFC dla ciągów Unicode
Cała biblioteka klas MFC jest warunkowo włączona dla znaków Unicode i ciągów przechowywanych w postaci znaków szerokich jako UTF-16. W szczególności klasa CString jest włączona w formacie Unicode.
Te biblioteki, debuger i pliki DLL są używane do obsługi formatu Unicode w MFC:
WersjaMFCU.LIB
UD wersjiMFC. LIB
Wersja narzędzia MFCMU.LIB
Ud wersjiprogramu MFCM. LIB
Wersja MFCSU.LIB
UD wersjiMFCS. LIB
UAFXCW. LIB
UAFXCWD. LIB
Wersja MFCU.PDB
UD wersjiMFC. PDB
Wersja MFCMU.PDB
Ud wersjiprogramu MFCM. PDB
Wersja MFCSU.PDB
UD wersjiMFCS. PDB
UAFXCW. PDB
UAFXCWD. PDB
U.DLL wersjiMFC
UD.DLL wersjiMFC
U.DLL wersjiprogramu MFCM
UD.DLL wersjiprogramu MFCM
(wersja reprezentuje numer wersji pliku, na przykład "140" oznacza wersję 14.0).
CString jest oparty na typie TCHAR danych. Jeśli symbol _UNICODE jest zdefiniowany dla kompilacji programu, TCHAR jest zdefiniowany jako typ wchar_t, 16-bitowy typ kodowania znaków. TCHAR W przeciwnym razie jest definiowana jako char, normalne kodowanie znaków 8-bitowych. W związku z tym w formacie Unicode element CString składa się z 16-bitowych znaków. Bez formatu Unicode składa się z znaków typu char.
Aby ukończyć programowanie Unicode aplikacji, należy również:
Użyj makra
_T, aby warunkowo kodować ciągi literału, które mają być przenośne do formatu Unicode.Podczas przekazywania ciągów zwróć uwagę na to, czy argumenty funkcji wymagają długości znaków, czy długości w bajtach. Różnica jest ważna, jeśli używasz ciągów Unicode.
Użyj przenośnych wersji funkcji obsługi ciągów w czasie wykonywania języka C.
Użyj następujących typów danych dla znaków i wskaźników znaków:
Użyj
TCHARmiejsca, w którym należy użyć poleceniachar.Użyj
LPTSTRmiejsca, w którym należy użyć poleceniachar*.Użyj
LPCTSTRmiejsca, w którym należy użyć poleceniaconst char*.CStringudostępnia operatorLPCTSTRdo konwersji międzyCStringiLPCTSTR.
CString Dostarcza również konstruktory obsługujące unicode, operatory przypisania i operatory porównania.
Odwołanie do biblioteki czasu wykonywania definiuje przenośne wersje wszystkich funkcji obsługi ciągów. Aby uzyskać więcej informacji, zobacz kategorię Internationalization (Internationalization).
Obsługa MFC dla ciągów MBCS
Biblioteka klas jest również włączona dla zestawów znaków wielobajtowych, ale tylko w przypadku zestawów znaków dwubajtowych (DBCS).
W zestawie znaków wielobajtowych znak może być jeden lub 2 bajty szerokości. Jeśli ma 2 bajty szerokości, jego pierwszy bajt jest specjalnym "bajtem ołowiu", który jest wybierany z określonego zakresu, w zależności od używanej strony kodowej. Połączmy prowadzić i "bajty końcowe" określają unikatowe kodowanie znaków.
Jeśli symbol _MBCS jest zdefiniowany dla kompilacji programu, wpisz TCHAR, na którym CString jest oparta, mapuje na char. Zależy to od Ciebie, aby określić, które bajty w obiekcie CString są bajtami ołowiu i które są bajtami końcowymi. Biblioteka języka C w czasie wykonywania dostarcza funkcje ułatwiające określenie tego.
W obszarze DBCS dany ciąg może zawierać wszystkie znaki ANSI jednobajtowe, wszystkie znaki dwubajtowe lub kombinację tych dwóch znaków. Te możliwości wymagają specjalnej staranności w analizowaniu ciągów. CString Obejmuje to obiekty.
Uwaga
Serializacja ciągów Unicode w MFC może odczytywać ciągi Unicode i MBCS niezależnie od wersji uruchomionej aplikacji. Pliki danych są przenośne między wersjami unicode i MBCS programu.
CString Funkcje składowe używają specjalnych "ogólnych wersji tekstowych" wywoływanych przez nich funkcji czasu wykonywania języka C lub używają funkcji obsługujących unicode. W związku z tym, jeśli CString na przykład funkcja zwykle wywołuje strcmpfunkcję , wywołuje odpowiednią funkcję _tcscmp ogólnego tekstu. W zależności od sposobu i sposobu definiowania _tcscmp symboli _MBCS _UNICODE mapuje się w następujący sposób:
| Symbole | Function |
|---|---|
_MBCS zdefiniowany |
_mbscmp |
_UNICODE zdefiniowany |
wcscmp |
| Żaden z symboli nie został zdefiniowany | strcmp |
Uwaga
Symbole _MBCS i _UNICODE wzajemnie się wykluczają.
Ogólne mapowania funkcji tekstowych dla wszystkich procedur obsługi ciągów czasu wykonywania zostały omówione w dokumentacji biblioteki czasu wykonywania języka C. Aby uzyskać listę, zobacz Internationalization (Internacjonalizacja).
CString Podobnie metody są implementowane przy użyciu ogólnych mapowań typów danych. Aby włączyć zarówno MBCS, jak i Unicode, MFC używa dla TCHAR char lub , LPTSTR dla char* lub wchar_t*wchar_t, i dla const charLPCTSTR* lub const wchar_t*. Zapewniają one poprawne mapowania dla MBCS lub Unicode.