Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Нужна помощь с функцией (строки) С++

92K
01 декабря 2013 года
Сергей Комаров
1 / / 01.12.2013
подскажите пожалуйста функцию для удаления из первой строки символов, которые есть во второй строке
326
02 декабря 2013 года
sadovoya
757 / / 19.11.2005
Смотрите здесь:
Контейнерные средства
C-средства

Из них можно накомбинировать то, что вам нужно.
Либо напишите свою, просто пробегая в цикле и сравнивая. Может так даже быстрей.
446
02 декабря 2013 года
Meander
487 / / 04.09.2011
strtok
332
02 декабря 2013 года
Valiant
416 / / 27.09.2004
С strtok на мой взгляд как то геморно.
Вариант пробежаться по массиву как то интереснее выглядит.
27K
14 декабря 2013 года
mnanorn
78 / / 01.12.2013
Здравствуйте!

В стандартной библиотеке Си такой функции нет. Но есть
 
Код:
char *strchr(const char *, int);
Она ищет символ (второй аргумент) в строке (первый аргумент) и возвращает его адрес (или NULL в случае, если не нашла). Можно последовательно искать символы из второй строки в первой. В случае обнаружения в цикле сдвигать все символы первой строки после найденного на -1. Т.о. Вы удалите символ из строки.

Но лично я предпочитаю хардкор (так понятнее):
 
Код:
char* delmatch(char* source, char* templ)
{
    for(unsigned long i = 0; source[i]; i++)
        for(unsigned long j = 0; templ[j]; j++)
            if(source[i] == templ[j])
                for(unsigned long k = i; source[k]; k++)
                    source[k] = source[k + 1], i--;

    return source;
}
Комментарии нужны? :)

P.S.
  1. Работает только с NULL-терминированной строкой. Если в конце строки не будет нуля, мы все умрем. :D
  2. Инициализация в цикле работает только со стандартом C99
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог