1 // Common/StringConvert.h 2 3 #ifndef __COMMON_STRING_CONVERT_H 4 #define __COMMON_STRING_CONVERT_H 5 6 #include "MyString.h" 7 #include "MyWindows.h" 8 9 UString MultiByteToUnicodeString(const AString &src, UINT codePage = CP_ACP); 10 UString MultiByteToUnicodeString(const char *src, UINT codePage = CP_ACP); 11 12 // optimized versions that work faster for ASCII strings 13 void MultiByteToUnicodeString2(UString &dest, const AString &src, UINT codePage = CP_ACP); 14 // void UnicodeStringToMultiByte2(AString &dest, const UString &s, UINT codePage, char defaultChar, bool &defaultCharWasUsed); 15 void UnicodeStringToMultiByte2(AString &dest, const UString &src, UINT codePage); 16 17 AString UnicodeStringToMultiByte(const UString &src, UINT codePage, char defaultChar, bool &defaultCharWasUsed); 18 AString UnicodeStringToMultiByte(const UString &src, UINT codePage = CP_ACP); 19 20 inline const wchar_t* GetUnicodeString(const wchar_t *u) { return u; } 21 inline const UString& GetUnicodeString(const UString &u) { return u; } 22 23 inline UString GetUnicodeString(const AString &a) { return MultiByteToUnicodeString(a); } 24 inline UString GetUnicodeString(const char *a) { return MultiByteToUnicodeString(a); } 25 26 inline UString GetUnicodeString(const AString &a, UINT codePage) 27 { return MultiByteToUnicodeString(a, codePage); } 28 inline UString GetUnicodeString(const char *a, UINT codePage) 29 { return MultiByteToUnicodeString(a, codePage); } 30 31 inline const wchar_t* GetUnicodeString(const wchar_t *u, UINT) { return u; } 32 inline const UString& GetUnicodeString(const UString &u, UINT) { return u; } 33 34 inline const char* GetAnsiString(const char *a) { return a; } 35 inline const AString& GetAnsiString(const AString &a) { return a; } 36 37 inline AString GetAnsiString(const wchar_t *u) { return UnicodeStringToMultiByte(UString(u)); } 38 inline AString GetAnsiString(const UString &u) { return UnicodeStringToMultiByte(u); } 39 40 /* 41 inline const char* GetOemString(const char* oem) 42 { return oem; } 43 inline const AString& GetOemString(const AString &oem) 44 { return oem; } 45 */ 46 const char* GetOemString(const char* oem); 47 const AString& GetOemString(const AString &oem); 48 inline AString GetOemString(const UString &u) 49 { return UnicodeStringToMultiByte(u, CP_OEMCP); } 50 51 #ifdef _UNICODE 52 inline const wchar_t* GetSystemString(const wchar_t *u) { return u;} 53 inline const UString& GetSystemString(const UString &u) { return u;} 54 inline const wchar_t* GetSystemString(const wchar_t *u, UINT /* codePage */) { return u;} 55 inline const UString& GetSystemString(const UString &u, UINT /* codePage */) { return u;} 56 57 inline UString GetSystemString(const AString &a, UINT codePage) { return MultiByteToUnicodeString(a, codePage); } 58 inline UString GetSystemString(const char *a, UINT codePage) { return MultiByteToUnicodeString(a, codePage); } 59 inline UString GetSystemString(const AString &a) { return MultiByteToUnicodeString(a); } 60 inline UString GetSystemString(const char *a) { return MultiByteToUnicodeString(a); } 61 #else 62 inline const char* GetSystemString(const char *a) { return a; } 63 inline const AString& GetSystemString(const AString &a) { return a; } 64 inline const char* GetSystemString(const char *a, UINT) { return a; } 65 inline const AString& GetSystemString(const AString &a, UINT) { return a; } 66 67 inline AString GetSystemString(const wchar_t *u) { return UnicodeStringToMultiByte(UString(u)); } 68 inline AString GetSystemString(const UString &u) { return UnicodeStringToMultiByte(u); } 69 inline AString GetSystemString(const UString &u, UINT codePage) { return UnicodeStringToMultiByte(u, codePage); } 70 71 72 73 /* 74 inline AString GetSystemString(const wchar_t *u) 75 { 76 UString s; 77 s = u; 78 return UnicodeStringToMultiByte(s); 79 } 80 */ 81 82 #endif 83 84 #ifndef UNDER_CE 85 AString SystemStringToOemString(const CSysString &src); 86 #endif 87 88 #endif 89