Здравствуйте.
Есть некая ф-я конвертации
wchar_t*
строки:
bool WcharToString(const wchar_t* wstr, std::string& converted, UINT codePage = CP_ACP)
{
if(wstr)
{
int length = ::WideCharToMultiByte(codePage, 0, wstr, -1, NULL, 0, NULL, NULL);
char* str = new char[length + 1];
str[length] = '\0';
// ignoring returned value
::WideCharToMultiByte(codePage, 0, wstr, -1, str, length, NULL, NULL);
converted.assign(str);
delete [] str;
return true;
}
return false;
}
И она, оказывается, прекрасно работает, если использовать
2010 студию, но не работает, если это
2012 студия. Что скажете по этому поводу — некорректно написана ф-я выше или баг библиотек 2012 студии?
( сама
WideCharToMultiByte
обьявляется в
WinNls.h 2010 студии и в
Stringapiset.h 2012 — т.е. что то меняли :) ).
Если баг, то может сообщить Microsoft? А если не баг, подскажите как сделать правильно.
Заранее спасибо.