string to wstring 转换
std::wstring s2ws(const std::string& s)
{
setlocale(LC_ALL, "chs");
const char* _Source = s.c_str();
size_t _Dsize = s.size() + 1;
wchar_t *_Dest = new wchar_t[_Dsize];
wmemset(_Dest, 0, _Dsize);
mbstowcs(_Dest, _Source, _Dsize);
std::wstring result = _Dest;
delete[]_Dest;
setlocale(LC_ALL, "C");
return result;
}
全角字符转换为半角字符
wstring BothInfo::trim(wstring &s)
{
const int nStrLen = s.size() + 2;
wchar_t* inputWchar = new wchar_t[nStrLen];
memset(inputWchar, 0x0, sizeof(wchar_t)*nStrLen);
memcpy(inputWchar, s.c_str(), sizeof(wchar_t)*nStrLen);
for (int i = 0; i < nStrLen; i++)
{
if (inputWchar[i] == 65306)
{
inputWchar[i] -= 65248;
continue;
}
if (inputWchar[i] >= 0xff01 && inputWchar[i] <= 0xff7e)
{
inputWchar[i] -= 65248;
}
else if (inputWchar[i] == 12288)
{
inputWchar[i] = ' ';
}
else if (inputWchar[i] >= 0x00a4 && inputWchar[i] <= 0x3017)
{
inputWchar[i] = ' ';
}
}
wstring halfString;
halfString.resize(nStrLen);
halfString = inputWchar;
delete[] inputWchar;
return halfString;
}