#pragma once
class CStringToolExt
{
public:
CStringToolExt();
~CStringToolExt();
public:
static CStringA CStrT2CStrA(const CString &cstrSrc);
static CStringW CStrT2CStrW(const CString &cstrSrc);
static CString CStrA2CStrT(const CStringA &cstrSrc);
static CString CStrW2CStrT(const CStringW &cstrSrc);
private:
static CStringW CStrA2CStrW(const CStringA &cstrSrcA);
static CStringA CStrW2CStrA(const CStringW &cstrSrcW);
};
#include "stdafx.h"
#include "StringToolExt.h"
CStringToolExt::CStringToolExt()
{
}
CStringToolExt::~CStringToolExt()
{
}
CStringA CStringToolExt::CStrT2CStrA(const CString &cstrSrc)
{
#ifdef _UNICODE
return CStrW2CStrA(cstrSrc);
#else
return cstrSrc;
#endif
}
CStringW CStringToolExt::CStrT2CStrW(const CString &cstrSrc)
{
#ifdef _UNICODE
return cstrSrc;
#else
return CStrA2CStrW(cstrSrc);
#endif
}
CString CStringToolExt::CStrA2CStrT(const CStringA &cstrSrc)
{
#ifdef _UNICODE
return CStrA2CStrW(cstrSrc);
#else
return cstrSrc;
#endif
}
CString CStringToolExt::CStrW2CStrT(const CStringW &cstrSrc)
{
#ifdef _UNICODE
return cstrSrc;
#else
return CStrW2CStrA(cstrSrc);
#endif
}
CStringA CStringToolExt::CStrW2CStrA(const CStringW &cstrSrcW)
{
int len = WideCharToMultiByte(CP_ACP, 0, LPCTSTR(cstrSrcW), -1, NULL, 0, NULL, NULL);
char *str = new char[len];
memset(str, 0, len * sizeof(char));
WideCharToMultiByte(CP_ACP, 0, LPCWSTR(cstrSrcW), -1, str, len, NULL, NULL);
CStringA cstrDestA = str;
delete str;
return cstrDestA;
}
CStringW CStringToolExt::CStrA2CStrW(const CStringA &cstrSrcA)
{
int len = MultiByteToWideChar(CP_ACP, 0, LPCSTR(cstrSrcA), -1, NULL, 0);
wchar_t *wstr = new wchar_t[len];
memset(wstr, 0, len * sizeof(wchar_t));
MultiByteToWideChar(CP_ACP, 0, LPCSTR(cstrSrcA), -1, wstr, len);
CStringW cstrDestW = wstr;
delete wstr;
return cstrDestW;
}