Хочу сделать изменение любого выбранного символа в массиве через указатели.
char *str = "Hello";
*static_cast<char*>( (str + sizeof(char) * 1) ) = 'K';
Но ничего не выходит, как можно такое реализовать? и вообще можно ли? Суть в том чтобы указать на нужный символ, найти его адрес в памяти и по этому адресу заменить значение.
В C++ (в отличии от C) строковые литералы имеют тип константных символьных массивов. Поэтому правильно будет написать
const char *str = "Hello";
И в C++, и в C любая попытка изменить строковый литерал ведет к неопределенному поведению программы.
Вы могли бы определить символьный массив, инициализировав его строковым литералом. Например,
char str[] = "Hello";
Тогда бы вы могли написать просто
*( str + 1 ) = 'K';
Не имеет смысла использовать приведение типов static_cast<char *>
, так как выражение str + sizeof(char) * 1
уже имеет тип char *
и эквивалентно выражению str + 1
.
Выражение sizeof(char)
всегда равно 1.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Программно получаю строки (c++, std::string) с неоформленным html кодом, можно ли как-то строки программно обрабатывать и придавать html коду оформление,...
Нашел программу для выполнения задачи размещения без перестановки, но не могу понять, как работает сам алгоритм, можете объяснить ?
Хочу заменить часть скриптов на Python более быстрыми аналогами на C++В первую очередь интересует SAX парсеры из libxml++-3