Ragazzi buonasera. Di solito nei miei progetti per la conversione da MBCS a UNICODE e viceversa uso queste funzioni:
std::wstring str_to_wstr(const std::string &str, UINT cp)
{
int len = MultiByteToWideChar(cp, 0, str.c_str(), str.length(), 0, 0);
if (!len)
return L"";
std::vector<wchar_t> wbuff(len + 1);
if (!MultiByteToWideChar(cp, 0, str.c_str(), str.length(), &wbuff[0], len))
return L"";
return &wbuff[0];
}
e
std::string wstr_to_str(const std::wstring &wstr, UINT cp)
{
int len = WideCharToMultiByte(cp, 0, wstr.c_str(), wstr.length(), 0, 0, 0, 0);
if (!len)
return "";
std::vector<char> abuff(len + 1);
if (!WideCharToMultiByte(cp, 0, wstr.c_str(), wstr.length(), &abuff[0], len, 0, 0))
{
return "";
}
return &abuff[0];
}
Mi stavo chiedendo: Conoscete qualche altro modo per fare queste trasformazioni magari anche cross-platform senza scomodare la CString?
Grazie.