The way i did it is find the position of the characher that I want to delete, then swap that postion with its next character til the char is at the last pos, or just swap it with the last character. Then delete it by replacng it with null character or recreate the new one with new size with new and delete
char text = "Hello!";
char del = 'e';
text + strlen(text) + 1, //1 to get trailing 0 as well
std::cout << text;
↑ This does the same thing LendraDwi suggested under the hood. (Thought probably in more effective way)
↓ And Lowest0ne mage great visual of what happens.