00001
00002
00003
00004
00005 #include "StdAfx.h"
00006
00007 #include "StringConvert.h"
00008
00009 #ifndef _WIN32
00010 #include <stdlib.h>
00011 #endif
00012
00013 #ifdef _WIN32
00014 UString MultiByteToUnicodeString(const AString &srcString, UINT codePage)
00015 {
00016 UString resultString;
00017 if(!srcString.IsEmpty())
00018 {
00019 int numChars = MultiByteToWideChar(codePage, 0, srcString,
00020 srcString.Length(), resultString.GetBuffer(srcString.Length()),
00021 srcString.Length() + 1);
00022 #ifndef _WIN32_WCE
00023 if(numChars == 0)
00024 throw 282228;
00025 #endif
00026 resultString.ReleaseBuffer(numChars);
00027 }
00028 return resultString;
00029 }
00030
00031 AString UnicodeStringToMultiByte(const UString &srcString, UINT codePage)
00032 {
00033 AString resultString;
00034 if(!srcString.IsEmpty())
00035 {
00036 int numRequiredBytes = srcString.Length() * 2;
00037 int numChars = WideCharToMultiByte(codePage, 0, srcString,
00038 srcString.Length(), resultString.GetBuffer(numRequiredBytes),
00039 numRequiredBytes + 1, NULL, NULL);
00040 #ifndef _WIN32_WCE
00041 if(numChars == 0)
00042 throw 282229;
00043 #endif
00044 resultString.ReleaseBuffer(numChars);
00045 }
00046 return resultString;
00047 }
00048
00049 #ifndef _WIN32_WCE
00050 AString SystemStringToOemString(const CSysString &srcString)
00051 {
00052 AString result;
00053 CharToOem(srcString, result.GetBuffer(srcString.Length() * 2));
00054 result.ReleaseBuffer();
00055 return result;
00056 }
00057 #endif
00058
00059 #else
00060
00061 UString MultiByteToUnicodeString(const AString &srcString, UINT codePage)
00062 {
00063 UString resultString;
00064 for (int i = 0; i < srcString.Length(); i++)
00065 resultString += wchar_t(srcString[i]);
00066
00067 return resultString;
00068 }
00069
00070 AString UnicodeStringToMultiByte(const UString &srcString, UINT codePage)
00071 {
00072 AString resultString;
00073 for (int i = 0; i < srcString.Length(); i++)
00074 resultString += char(srcString[i]);
00075
00076 return resultString;
00077 }
00078
00079 #endif
00080