Я уверен, что это простой вопрос для большинства, но у меня возникают проблемы с попыткой выяснить, почему я не могу манипулировать этим укусом, и еще лучше, как я должен это делать , Так, например, мы имеем:Как манипулировать символьной строкой, указывающей на
char *str1="Hello World";
Все, что я хочу сделать, это манипулировать строку, которая в настоящее время, на который указывает «str1». Например, как показано ниже, я мог бы выводить строку и видеть оригинал. Тогда я мог бы добавить туда нулевой символ и сократить его.
cout << str1 << '\n';
str1[5] = '\0';
cout << str1;
Я также попытался:
cout << str1 << '\n';
*(str1+4) = '\0';
cout << str1;
В любом случае я надеюсь увидеть что-то вроде этого:
Hello World
Hello
Ошибка я получаю в обоих случаях, когда Я пытаюсь изменить строку. Я знаю, что было бы проще просто объявить str1 как массив (char str1[] = ....
), но мне дано ограничение на необходимость использования ужасного char *
Вы не можете изменить строковый литерал. К счастью, присвоение 'char *' устарело в C++ 11. – juanchopanza