Другие языки программирования и технологии

Подскажите аналог erase для работы с типом char на С++

Надо удалить из строки типа char среднее слово, нашел нужную команду но оказалось что она работает только со string есть ли аналог?
То есть удалить определенные биты? Смотри битовые структуры, они позволяют работать с группами битов и с отдельными битами как с отдельными переменными.
P.S. Или тебе, по добавлению к вопросу, не char, в char* ? Тогда такой готовой функции нет, надо писать самому прямо или с помощью стандартных функций. Вообще в C++ рекомендуется использовать тип string, *char там в основном для совместимости с С.
ДА
Давлатчон Ахмадов
55 445
Лучший ответ
Александру Дизов Отдельной функции нет, потому что это банальный strcpy:
char s[]="ABCDEF";
strcpy(s+2,s+4);
printf("%s",s);//ABEF

А рекомендуется, как правило, в каждом фреймворке свой велосипед.
просто так для строки ввиде char c[] = "string"; ничего не сделать. char должен быть указателем
char* str = "abc";
нужно выделять новый массив char с новым размером, копировать туда нужные символы из старого.
char* s = new char[ 3 ]; // a + c + 0завершающий
s[ 0 ] = str[ 0 ];
s[ 1 ] = str[ 2 ];
s[ 2 ] = 0;
delete []str;
str = s;

рекомендую создать свой строковый класс для тренировки.

class myString{

char* buffer; //сама строка
int size; // количество сиволов
int used; // выделено памяти для символов
public:

myString(){
size = 0;
used = 15;
buffer = new char[ used ];
buffer[ 0 ] = 0;
}
~myString( ){ delete []buffer; }

myString( const char* c_string ){
int len = strlen( c_string );
size = len;
used = len + 15;
buffer = new char[ used ];
memcpy( buffer, c_string, len ); //вроде так
buffer[ size ] = 0;
}

char* data(){ return this->buffer; }

тут прочие функции по вставки/удалению/поиску
типа
void pop_back(){
if( size > 0 ){
--size;
buffer[ size ] = 0;
}
}

};