У меня есть функция, которая должна преобразовывать char * в wchar_ *. Но это не так - у меня просто странная строка из трех пространств. Это потому, что GetWC возвращает указатель на не существующую строку?
const wchar_t *GetWC(const char *c)
{
size_t cSize = strlen(c)+1;
std::wstring wc( cSize, L'#');
mbstowcs( &wc[0], c, cSize );
return wc.c_str();
}
int _tmain(int argc, _TCHAR* argv[])
{
char *g ="aaa";
const wchar_t* f= GetWC(g);
wcout<<f;
return 0;
}
wc.c_str()
недействительно после GetWC
. wc
- локальная переменная
std::wstring
по значению, чтобы сохранить его значение. Любой, кому действительно нужен указатель, может вызватьc_str()
самостоятельно.