String sam w sobie jest tablicą char-ów. Możesz tą tablice wyjąć przy pomocy std::string.c_str(); . Ostatnia szufladka takiej tablicy to null oznaczający koniec tekstu.
std::string str ("do tablicy");
char * cstr = new char [str.length()+1];
Dodawanie stringów w trakcie trwania programu to dynamiczna alokacja pamięci. Można to zrobić z grubsza na dwa sposoby. Wskaźnikiem i operatorem new/delete, bądź przy pomocy kontenerów stl. Pierwszy został omówiony w filmach Pana Zelenta oraz każdej książce o c++.
Jeżeli chodzi o pracę w stringach <rofl> to dość obszerny temat.Podmienianie poszczególnych elementów, szukanie wolnych miejsc itp... Spróbuj znaleźć na stronie cpp0x.pl. Tam zostało to po części wyjaśnione.