Перейти к содержимому

Как удалить символ из строки в си

  • автор:

Удалить первый символ из строки в C++

В этом посте мы обсудим, как удалить первый символ из строки в C++.

1. Использование string::erase

Рекомендуемое решение для удаления символов из строки на месте — использование string::erase функция. Следующая программа C++ демонстрирует свое использование с помощью перегрузки диапазона:

std :: string str = «ABCD» ;
str . erase ( 0 , 1 ) ;
std :: cout << str << std :: endl ; // BCD

The string::erase функция также перегружена, чтобы принимать итератор. Итератор должен указывать на элемент, который необходимо удалить из строки.

std :: string str = «ABCD» ;
str . erase ( str . begin ( ) ) ;
std :: cout << str << std :: endl ; // BCD

Перед вызовом функции рекомендуется проверить наличие пустой строки. string::erase функция. В противном случае код выдает std::length_error исключение для пустой входной последовательности.

std :: string str = «ABCD» ;
if ( ! str . empty ( ) ) < str . erase ( str . begin ( ) ) ; std :: cout << str << std :: endl ; // BCD

Чтобы удалить первый символ, только если он соответствует определенному символу, выполните следующие действия:

std :: string str = «ABCD» ;
char ch = ‘A’ ;
if ( str . front ( ) == ch ) < str . erase ( str . begin ( ) ) ; std :: cout << str << std :: endl ; // BCD

2. Использование string::substr

The string::erase функция на месте изменяет строку. Чтобы получить копию исходной строки с удаленным последним символом, используйте string::substr функция.

std :: string str = «ABCD» ;
std :: string s ;
if ( ! str . empty ( ) ) < s = str . substr ( 1 , str . size ( ) - 1 ) ; std :: cout << s << std :: endl ; // BCD

Это все об удалении первого символа из строки в C++.

Оценить этот пост

Средний рейтинг 4.63 /5. Подсчет голосов: 19

Голосов пока нет! Будьте первым, кто оценит этот пост.

Сожалеем, что этот пост не оказался для вас полезным!

Расскажите, как мы можем улучшить этот пост?

Спасибо за чтение.

Пожалуйста, используйте наш онлайн-компилятор размещать код в комментариях, используя C, C++, Java, Python, JavaScript, C#, PHP и многие другие популярные языки программирования.

Как мы? Порекомендуйте нас своим друзьям и помогите нам расти. Удачного кодирования 🙂

Подписывайся
0 Комментарии
Встроенные отзывы
Просмотреть все комментарии
Загрузить больше комментариев
Просматривать
Подпишитесь на новые публикации

  • Все проблемы
  • Практика DSA
  • 100 самых популярных задач
  • 50 лучших классических задач
  • Лучшие алгоритмы
  • Компилятор С/С++
  • Компилятор Java
  • Компилятор Python
  • Компилятор JavaScript
  • компилятор PHP
  • Компилятор C#
  • Свяжитесь с нами
  • Политика конфиденциальности
  • условия обслуживания
  • Подпишитесь на новые публикации

Techie Delight © 2023 Все права защищены.

Этот веб-сайт использует файлы cookie. Используя этот сайт, вы соглашаетесь с использованием файлов cookie, нашей политикой, условиями авторского права и другими условиями. Читайте наши Политика конфиденциальности. Понятно

Удаление символов из си-строки

Нужно удалить первые 5 символов из строки (строка1). Потом скопировать 1 строку во вторую и заполнить пустые места восклицательными знаками (строка2). Написал код, всё должно работать, по идее, но не работает. В чем может быть проблема?

#include #include using namespace std; int main() < setlocale(0, ""); // получаю строки от пользователя char stroka1[20]; char stroka2[20]; cout "; std::cin.getline(stroka1, 20); cout "; std::cin.getline(stroka2, 20); // ищу знак "*" или "/" в первой строке и удаляю его. Добавляю восклицательных знаков в конец строки int i = 0; for (int q = 0; stroka1[q]; ++q) < if (q < 5) < stroka1[q] = ' '; >else < break; >> for (; stroka1[i]; ++i) < stroka1[i] = '!'; >// вывожу содержимое этих строк std::cout 

Отслеживать

218k 15 15 золотых знаков 117 117 серебряных знаков 229 229 бронзовых знаков

Удаление символа из строки

Задача такова: Даны символы s1,s2. Известно, что символ s1 отличен от пробела и что среди s2,s3. имеется хотя бы один пробел. Рассматриваются s1. sn - символы, предшествующие первому пробелу (n заранее неизвестно). Преобразовать последовательность s1. sn:
в) удалив все символы, не являющиеся буквами или цифрами, и заменив каждую большую букву одноименной малой.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
#include #include #include void main() { unsigned short int n = 0;//количество символов char *str;//строка char ch;//текущий символ unsigned short int i, j; setlocale(LC_ALL, "RUS"); puts("Введите строку посимвольно. Пробел - конец ввода."); str = (char*)malloc(sizeof(char)); do { ch = getchar(); if (ch != 32) { n++; str = (char*)realloc(str, n * sizeof(char)); *(str + n - 1) = ch; } } while (ch != 32); str[n] = 0; puts(str); for (i = 0; i  n; i++)  if ((*(str + i) >= '0') && (*(str + i)  '9')  n--; //длина строки уменьшается на 1 } } str = (char*)realloc(str, n * sizeof(char));//уменьшаем размер строки str[n] = 0; puts(str); system("pause"); }

Все бы ничего. И программа исправно заменяла все большие буквы маленькими, пока я не добавила удаление символов(28-36 строка). После чего программа не только не удаляет символы, но даже перестала заменять буквы.
Погуглив, я не нашла другого способа удалить символ из строки, кроме как перезаписать все заново, что я и сделала.

Удалить определенные символы из строки в C++

В этом посте мы обсудим, как удалить определенные символы из строки в C++.

1. Использование std::remove функция

Рекомендуемый подход заключается в использовании std::remove алгоритм, который принимает итераторы в начале и конце контейнера и значение, которое нужно удалить.

std :: string s = "#Hello #World!!" ;
std :: string chars = "#!" ;
for ( char c : chars ) < s . erase ( std :: remove ( s . begin ( ) , s . end ( ) , c ) , s . end ( ) ) ; std :: cout << s ;

результат:

Hello World

Обратите внимание, что Стереть-удалить идиома техника используется с тех пор, как std::remove алгоритм на самом деле не удаляет символы из строки и ожидает вызова std::erase алгоритм.

2. Использование std::remove_if функция

Приведенное выше решение делает несколько вызовов std::remove алгоритм, по одному для каждого заданного символа. Другим возможным решением является использование std::remove_if алгоритм, который использует предикат для фильтрации.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *