Функция возвращает указатель на ничто? [Дубликат]

0

У меня есть функция, которая должна преобразовывать 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;
}
  • 0
    Вернуть std::wstring по значению, чтобы сохранить его значение. Любой, кому действительно нужен указатель, может вызвать c_str() самостоятельно.
Теги:

1 ответ

1

wc.c_str() недействительно после GetWC. wc - локальная переменная

Ещё вопросы

Сообщество Overcoder
Наверх
Меню