Как преобразовать wstring в wchar_t *? C ++

Я хочу преобразовать wstring в wchar_t *. Я перепробовал все, что знаю, пожалуйста, помогите. Я хочу преобразовать wstring в wchar_t *.


person Jones Jones    schedule 08.07.2017    source источник
comment
Согласно руководству вы можете получить такой указатель: std :: wstring :: c_str   -  person Galik    schedule 08.07.2017
comment
Возможный дубликат C ++ Convert string (or char *) to wstring (или wchar_t *)   -  person tinamou    schedule 08.07.2017


Ответы (2)


Вы пробовали прочитать справочник?

const wchar_t* wcs = s.c_str();
person K. Kirsz    schedule 08.07.2017
comment
OP, очевидно, хочет wchar_t*, а не wchar_t const*, как показано в этом ответе. Начиная с C ++ 17, wstring :: data () предоставляет тот. - person IInspectable; 24.06.2019

Невозможно преобразовать wstring в wchar_t*, но вы можете преобразовать его в const wchar_t*, о чем говорится в ответе К.Кирша.

Это сделано намеренно, потому что вы можете получить доступ к константному указателю, но не должны манипулировать указателем. См. Соответствующий вопрос и его ответы.

Лучше всего создать новую строку с помощью _ wcsdup и получить доступ к неконстантному буферу, там приведен пример ascii.

Для юникода:

    wstring str = L"I am a unicode string";
    wchar_t* ptr = _wcsdup(str.c_str());
    // use ptr here....
    free(ptr); // free memory when done
person zar    schedule 29.10.2019