Другие языки программирования и технологии
Подскажите аналог erase для работы с типом char на С++
Надо удалить из строки типа char среднее слово, нашел нужную команду но оказалось что она работает только со string есть ли аналог?
То есть удалить определенные биты? Смотри битовые структуры, они позволяют работать с группами битов и с отдельными битами как с отдельными переменными.
P.S. Или тебе, по добавлению к вопросу, не char, в char* ? Тогда такой готовой функции нет, надо писать самому прямо или с помощью стандартных функций. Вообще в C++ рекомендуется использовать тип string, *char там в основном для совместимости с С.
P.S. Или тебе, по добавлению к вопросу, не char, в char* ? Тогда такой готовой функции нет, надо писать самому прямо или с помощью стандартных функций. Вообще в C++ рекомендуется использовать тип string, *char там в основном для совместимости с С.
просто так для строки ввиде 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;
}
}
};
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;
}
}
};
Похожие вопросы
- C++ как переменную (signed int) разделить на старший и младший байт, а после записать в 2е другие переменные типа char?
- Сравнение переменных типа char в с++
- Зачем char в паскале? Зачем используется символьный тип, Char, в паскале?
- как сравнить элементы массива типа char?
- как считывать строку типа char до пробела C++
- Подскажите программу для создания сайта (по типу юкоза)
- народ подскажите самый простой в работе фотошоп-что бы сделать красивую аватарку
- с++ внутри. Как из int преобразовать в char и *char и обратно. И есть ли аналог функций switch(a) где a не char a int?
- C++ Про выбор типа данных. Int, char и т. д.
- [C++] char && char* && char[ ]
char s[]="ABCDEF";
strcpy(s+2,s+4);
printf("%s",s);//ABEF
А рекомендуется, как правило, в каждом фреймворке свой велосипед.