Собсна, насколько я понял, я не могу изменять строку, если я инициализировал на неё указатель, примером, char* a("dududu"); (вызывается исключение с ошибкой доступа при записи, к примеру, *p = 'a';). Но я могу создать массив символов: char a[]("dududu"), но я не понимаю как внести её в динамическую память через new. Редактор пишет:
Для агрегатного объекта требуется инициализация с использованием "{...}"
Что это значит (как поправить) или как иначе я могу изменять строку?
Код, приводящий к исключению:
char* a("dududu");
char* p(a);
*p = 'a';
Можно в стеке сделать копию строки так:
char str[] = "abcd" ;
str[1]= 'x' ;
или в куче так :
# include <string.h>
char const * s = "abcd" ;
int l = strlen(s) ;
char * str = new char [l+1];
memcpy(str,s,l+1);
str[1]= 'x' ;
Сборка персонального компьютера от Artline: умный выбор для современных пользователей