В чем разница между строками C и C ++? - PullRequest
11 голосов
/ 11 августа 2010

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

Ответы [ 2 ]

26 голосов
/ 11 августа 2010

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

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

8 голосов
/ 29 ноября 2015

C ++ строки намного безопаснее, проще, и они поддерживают различные функции манипуляции со строками, такие как добавление, поиск, копирование, объединение и т. Д.

Одно интересное различие между строкой c и строкой 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;
}

вывод »¿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;
}

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

Надеюсь, вы поняли !! !! 1015 *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...