std::string my_string("something");
char* my_char_array = new char[5];
strncpy(my_char_array, my_string.c_str(), 4);
my_char_array[4] = '\0'; // my_char_array contains "some"
С помощью strncpy
вы можете скопировать не более n символов из источника в место назначения. Тем не менее, обратите внимание, что если длина исходной строки не превышает n символов, назначение не будет завершено нулем; Вы должны положить в него завершающий нулевой символ самостоятельно.
Массив char длиной 5 может содержать не более 4 символов, поскольку 5-й должен быть завершающим нулевым символом. Следовательно, в приведенном выше коде, n = 4.