string sPath;
sPath = ConvertAnsiToUnicode(argv[0],_tcslen(argv[0]));
------------------------
string ConvertAnsiToUnicode(wchar_t *szString,int nSzie)
{
int cbMultiByte = ::WideCharToMultiByte(CP_UTF8, 0, szString, nSzie+1, NULL, 0,
NULL, NULL);
char* pMultiByteStr = NULL;
string result;
if (cbMultiByte > 0)
{
pMultiByteStr = new char[cbMultiByte];
cbMultiByte = ::WideCharToMultiByte(CP_UTF8, 0, szString, nSzie+1, pMultiByteStr,
cbMultiByte, NULL, NULL);
if (cbMultiByte > 0 && pMultiByteStr[cbMultiByte-1] == NULL)
{
cbMultiByte--;
}
if (cbMultiByte > 0)
{
result.assign(pMultiByteStr, cbMultiByte);
}
delete[] pMultiByteStr;
}
return result;
}
----------------------------------------------------------------------------------------------------------------
std::wstring CStringUtils::WStringFromChar(const char* pSource, int cchSource)
{
std::wstring result;
if (pSource != NULL)
{
if (cchSource == -1)
{
cchSource = (int)strlen(pSource) + 1;
}
int cchWideChar = ::MultiByteToWideChar(CP_UTF8, 0, pSource, cchSource, NULL, 0);
if (cchWideChar > 0)
{
wchar_t* pWideCharStr = NULL;
try
{
pWideCharStr = new wchar_t[cchWideChar];
cchWideChar = ::MultiByteToWideChar(CP_UTF8, 0, pSource, cchSource, pWideCharStr, cchWideChar);
if (cchWideChar > 0 && pWideCharStr[cchWideChar-1] == NULL)
{
cchWideChar--;
}
if (cchWideChar > 0)
{
result.assign(pWideCharStr, cchWideChar);
}
}
catch (...)
{
}
delete[] pWideCharStr;
}
}
return result;
}
sPath = ConvertAnsiToUnicode(argv[0],_tcslen(argv[0]));
------------------------
string ConvertAnsiToUnicode(wchar_t *szString,int nSzie)
{
int cbMultiByte = ::WideCharToMultiByte(CP_UTF8, 0, szString, nSzie+1, NULL, 0,
NULL, NULL);
char* pMultiByteStr = NULL;
string result;
if (cbMultiByte > 0)
{
pMultiByteStr = new char[cbMultiByte];
cbMultiByte = ::WideCharToMultiByte(CP_UTF8, 0, szString, nSzie+1, pMultiByteStr,
cbMultiByte, NULL, NULL);
if (cbMultiByte > 0 && pMultiByteStr[cbMultiByte-1] == NULL)
{
cbMultiByte--;
}
if (cbMultiByte > 0)
{
result.assign(pMultiByteStr, cbMultiByte);
}
delete[] pMultiByteStr;
}
return result;
}
----------------------------------------------------------------------------------------------------------------
std::wstring CStringUtils::WStringFromChar(const char* pSource, int cchSource)
{
std::wstring result;
if (pSource != NULL)
{
if (cchSource == -1)
{
cchSource = (int)strlen(pSource) + 1;
}
int cchWideChar = ::MultiByteToWideChar(CP_UTF8, 0, pSource, cchSource, NULL, 0);
if (cchWideChar > 0)
{
wchar_t* pWideCharStr = NULL;
try
{
pWideCharStr = new wchar_t[cchWideChar];
cchWideChar = ::MultiByteToWideChar(CP_UTF8, 0, pSource, cchSource, pWideCharStr, cchWideChar);
if (cchWideChar > 0 && pWideCharStr[cchWideChar-1] == NULL)
{
cchWideChar--;
}
if (cchWideChar > 0)
{
result.assign(pWideCharStr, cchWideChar);
}
}
catch (...)
{
}
delete[] pWideCharStr;
}
}
return result;
}
No comments:
Post a Comment