std::wstring string2wstring(std::string str)
{
std::wstring result;
int len = MultiByteToWideChar(CP_ACP, 0, str.c_str(), str.size(), NULL, 0);
wchar_t* buffer = new wchar_t[len + 1];
MultiByteToWideChar(CP_ACP, 0, str.c_str(), str.size(), buffer, len);
buffer[len] = L'\0';
result.append(buffer);
delete[] buffer;
return result;
}
std::string wstring2string(std::wstring wstr)
{
std::string result;
int len = WideCharToMultiByte(CP_ACP, 0, wstr.c_str(), wstr.size(), NULL, 0, NULL, NULL);
char* buffer = new char[len + 1];
WideCharToMultiByte(CP_ACP, 0, wstr.c_str(), wstr.size(), buffer, len, NULL, NULL);
buffer[len] = '\0';
result.append(buffer);
delete[] buffer;
return result;
}
std::vector<std::wstring> Split(const std::wstring & str, wchar_t delimeter)
{
size_t last = 0;
size_t index = str.find_first_of(delimeter, last);
std::vector<std::wstring> items;
while (index != std::wstring::npos)
{
items.push_back(str.substr(last, index-last));
last = index + 1;
index = str.find_first_of(delimeter, last);
}
items.push_back(str.substr(last));
return items;
}
inline std::string& lTrim(std::string &ss)
{
std::string::iterator p = std::find_if(ss.begin(), ss.end(), std::not1(std::ptr_fun(isspace)));
ss.erase(ss.begin(), p);
return ss;
}
inline std::string& rTrim(std::string &ss)
{
std::string::reverse_iterator p = std::find_if(ss.rbegin(), ss.rend(), std::not1(std::ptr_fun(isspace)));
ss.erase(p.base(), ss.end());
return ss;
}
inline std::string& trim(std::string &st)
{
lTrim(rTrim(st));
return st;
}