W języku C++ typ string, jest to typ zdefiniowany przez użytkownika. Pewnie sobie nawet nie zdajesz z tego sprawy, ale string posiada w sobie emchanizmy rezerwujące i zwalniające pamięć, przeładowane operatory funkcje składowe i wiele innych ułatwień, które w C musisz sam napisać. To wszystko jest zamknięte w klasie. (Nie musisz tego rozumieć, aby korzystać z typu string)
Dlaczego w C trzeba pisać wszystko samemu?
Dlatego, że język C nie posiada obiektowości (klas) i stworzenie odpowiednika string w tym języku jest najzwyczajniej w swiecie — niemożliwe :-)
Trzeba więc posługiwać się zwykłymi tablicami znaków ze stałym rozmiarem. Mamy oddane do dyspozycji jedynie funkcje, które pracują na tablicach znaków.
Tutaj masz listę:
http://cpp0x.pl/dokumentacja/standard-C/Lancuchy-znakow-C/11