В чем разница между строками C и строками С++?

В чем разница между строками C и строками С++. Специально при динамическом распределении памяти

Ответ 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;

В С++ строки (std::string) представляют собой объекты со всем связанным автоматизированным управлением памятью и контролем, что делает их намного более безопасными и удобными в использовании, особенно для новичков. Для динамического выделения используйте что-то вроде:

std::string s = "Hello";
s += ", Pax";

Я знаю, что я предпочел бы использовать, последний. Вы можете (если вам это нужно) всегда строить строку C из std::string с помощью метода c_str().

Ответ 2

Строки С++ намного безопаснее, проще и поддерживают различные функции манипуляции строками, такие как append, find, copy, concatenation и т.д.

одно интересное различие между строкой c и строкой С++ иллюстрируется следующим примером

#include <iostream>                            
using namespace std;

int main() {
    char a[6]; //c string
    a[5]='y';
    a[3]='o';
    a[2]='b';
    cout<<a; 
    return 0;
}

output "¿boRy¤ £ f · Pi" ¿

#include <iostream> 
using namespace std; 
int main() 
{ 
  string a; //c++ string
  a.resize(6);
  a[5]='y';
  a[3]='o';
  a[2]='b';
  cout<<a;
  return 0;
}

вывод мальчик

Надеюсь, у вас получилось!