Я хочу преобразовать wstring в wchar_t *. Я перепробовал все, что знаю, пожалуйста, помогите. Я хочу преобразовать wstring в wchar_t *.
Как преобразовать wstring в wchar_t *? C ++
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
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