Учитывая ваш вопрос и предположение, что вы должны использовать массив вместо wstring, вам лучше всего использовать std::copy
или даже старомодный memcpy
.Однако это опасно по следующим двум причинам:
- Если TCHAR на самом деле не является wchar_t, то, скорее всего, будут ошибки памяти.
- Если nameList содержит строку длиной более 255Символы TCHAR у вас будет переполнение буфера.
Тем не менее, вы можете сделать это безопасно следующим образом:
if (nameList[0].size() >= 256) {
throw std::length_error("string too long");
}
std::copy(nameList[0].begin(), nameList[0].end(), name);
name[nameList[0].size()] = TCHAR(0);
Вы также можете добавить static_assert
, чтобы принудительно вызватьошибка компилятора, если TCHAR не является wchar_t, но, вероятно, в этом нет необходимости, поскольку копия будет выполнять любое неявное преобразование на символьной основе.