Вы можете определить конструктор копирования, оператор присваивания и деструктор для вашей структуры.И тогда все копии, сделанные из каждого экземпляра, будут иметь свою собственную копию динамически выделяемой памяти.
Или вы можете просто использовать std::wstring
std::wstring
, предоставляющий метод доступа c_str
, который дает вам указатель на базовую строку с нулевым символом в конце.Это позволяет использовать std :: wstring с API-интерфейсами C.
std::wstring wide_string;
some_win_api_call( wide_string.c_str() ); // sending a string to winapi
Чтобы получить строку из winapi, вам нужно самостоятельно выделить буфер и передать указатель на буфер вместе с длинойбуфера.
wide_string.reserve( 256 ); // allocate some space to receive a string
get_string_from_winapi( &wide_string[0], wide_string.capacity() );
Возможно, вам придется сделать wide_string.capacity() * sizeof(wchar_t)
, если API хочет длину в байтах.Мой пример предполагает длину в символах.