Строго говоря, это не ошибка, это предупреждение, которое считается ошибкой. Причина предупреждения объясняется в сообщении об ошибке: strcpy
небезопасно, поскольку оно может выйти за пределы строки назначения.
В сообщении предлагаются два способа решения этой проблемы - (1) использование strcpy_s
или (2) отключение предупреждения (не рекомендуется).
В C ++ есть другой подход, который исправит ошибку компиляции - используя std::copy
функцию из стандартной библиотеки C ++, затем результат завершается нулем:
char *char_array = new char [n + 1];
std::copy(word.begin(), word.end(), char_array);
char_array[n] = '\0';