каково различие между строками C++ и струнами до?

что является различием между строками C++ и струнами до. Особенно при выполнении динамического выделения памяти

12
задан Teja 11 August 2010 в 02:41
поделиться

1 ответ

Я не знаю, с чего начать: -)

В 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 () .

26
ответ дан 2 December 2019 в 04:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: