что является различием между строками C++ и струнами до. Особенно при выполнении динамического выделения памяти
Я не знаю, с чего начать: -)
В C строки - это просто массивы char
, которые по соглашению заканчиваются байтом NUL. Что касается управления динамической памятью, вы можете просто malloc
место для них (включая дополнительный байт). Управление памятью при изменении строк - это ваша ответственность:
char *s = strdup ("Hello");
char *s2 = malloc (strlen (s) + 6);
strcpy (s2, s);
strcat (s2, ", Pax");
free (s);
s = s2;
В C ++ строки ( std :: string
) являются объектами со всем связанным автоматическим управлением памятью и контролем, что делает их много безопаснее и проще в использовании, особенно для новичка. Для динамического распределения используйте что-то вроде:
std::string s = "Hello";
s += ", Pax";
Я знаю, какой я бы предпочел бы использовать, последнее. Вы можете (при необходимости) всегда построить строку C из std :: string
, используя метод c_str ()
.