Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Ольчи
0 / 0 / 0
Регистрация: 03.08.2012
Сообщений: 5
#1

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

03.08.2012, 13:00. Просмотров 923. Ответов 5
Метки нет (Все метки)

Помогите пожалуйста написать функцию удаляющую из строки s все подстроки s1 с испотльзованием <string>

Добавлено через 1 минуту
void mydelete(string s, string s1)
{
int r=0;
int k=s.find(s1,r);
int t=s1.size();
{
while(k!=string::npos)
{
s.replace(k,t,"");
k=s.find(s1,r);
}
}}

Добавлено через 36 секунд
помогите исправить
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.08.2012, 13:00
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Удалить из строки все подстроки (C++):

Удалить все подстроки из строки - C++
Добрый день. У меня возникла следующая проблема: я написал программу кот-ая удаляет все подстроки из строки, она работает нормально до того...

Удалить из строки S все подстроки, совпадающие с S0 - C++
Даны строки S и S0. Удалить из строки S все подстроки, совпадающие с S0. Если совпадающих подстрок нет, то вывести строку S без изменений. ...

Удалить из строки все подстроки str2 - C++
Ребят, нужна помощь. Написать программу, которая считывает с клавиатуры 2 строки (str1 &amp; str2). Нужно из str1 удалить все подстроки str2....

Нужно удалить все подстроки из исходной строки - C++
Добрый день! Задача &quot;Даны строки S и S0. Удалить из строки S все подстроки, совпадающие с S0 . Если совпадающих подстрок нет, то вывести...

Удалить из строки каждое вхождение подстроки - C++
Удалить из строки s каждое вхождение подстроки s1. На С++ Дублирование тем запрещено правилами форума (п. 3.4). Не плодите...

В данном тексте подсчитать все вхождения подстроки «abc» и удалить их - C++
Задача программы такая: &quot;В данном тексте подсчитать все вхождения подстроки «abc» и удалить их. Вывести два варианта результата: с...

5
Пaтрик
416 / 391 / 39
Регистрация: 21.01.2012
Сообщений: 972
Завершенные тесты: 1
03.08.2012, 13:11 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <string>
 
 
int main()
{
   std::string str = "123abc123def123ghi";
   std::string rem = "123";  
   size_t pos = 0;
   while ((pos = str.find(rem)) != std::string::npos)  
      str.erase(pos, rem.length());
   std::cout << str << std::endl;   
}
1
Ольчи
0 / 0 / 0
Регистрация: 03.08.2012
Сообщений: 5
03.08.2012, 13:23  [ТС] #3
а можно реализовать в более развёрнутом виде,чтоб было меньше стандартных функций
0
MrCold
855 / 753 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
03.08.2012, 14:22 #4
C++
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
#include <iostream>
#include <string.h>
 
int main()
{
    char str[] = "123  YY13YY  Y123we 55rt123d11 re23t123";
    char sub[] = "123", *s = sub;
 
    size_t i = 0, sublen = strlen ( sub );
 
    while ( str[ i ] )
    {
            if ( *s == str[ i ] )
            
            if ( ! strncmp ( sub, &str[ i ], sublen ) )
 
               strcpy ( &str[ i ], &str[ i + sublen ] );
            
      i++;
    }
 
    std::cout << str << std::endl;
 
return ( 0 );
 
}
0
-=ЮрА=-
Заблокирован
Автор FAQ
03.08.2012, 14:23 #5
Ольчи, вот более просто как вы хотели
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <string>
#include <iostream>
using namespace std;
 
int main()
{
    char text[1024] = {0};//ГЃГіГґГґГҐГ° äëÿ ââîäèìîãî ГІГҐГЄГ±ГІГ*
    char word[32]   = {0};//ГЃГіГґГґГҐГ° äëÿ ââîäèìîãî ñëîâГ*
    char * sub = NULL;//ÓêГ*Г§Г*òåëü Г*Г* ïîäñòðîêó Г± Г*Г*Г·Г*ëîì Г*Г* word
    long wLen  = 0;//Áóäåò ñîäåðæГ*ГІГј äëèГ*Г*Гі ñëîâГ* word
    cout<<"Enter text : ";cin.getline(text,1023); 
    cout<<"Enter word : ";cin.getline(word,31); 
    wLen = strlen(word);
    //Г–ГЁГЄГ« îòðГ*ГЎГ*òûâГ*ГҐГІ äî ГІГҐГµ ïîð ïîêГ* Гў ГІГҐГЄГІГ±ГҐ ГҐГ±ГІГј word
    while(sub  = strstr(text, word))
    {
        if(sub + wLen)
            strcpy(sub, sub + wLen);//Âû÷ëåГ*ГїГҐГ¬ ГЁГ§ ГІГҐГЄГ±ГІГ* word
    }
    cout<<"Text after remove : "<<text<<endl;
    return 0;
}
0
Миниатюры
Удалить из строки все подстроки  
-=ЮрА=-
Заблокирован
Автор FAQ
03.08.2012, 14:35 #6
Немного подумав поправлюсь
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <string>
#include <iostream>
using namespace std;
 
int main()
{
    char text[1024] = {0};//Буффер для вводимого текста
    char word[32]   = {0};//Буффер для вводимого слова
    char * sub = NULL;//Указатель на подстроку с началом на word
    long wLen  = 0;//Будет содержать длинну слова word
    cout<<"Enter text : ";cin.getline(text,1023); 
    cout<<"Enter word : ";cin.getline(word,31); 
    wLen = strlen(word);
    //Цикл отрабатывает до тех пор пока в тектсе есть word
    while(sub  = strstr(text, word))
    {
        if(sub + wLen)
            strcpy(sub, sub + wLen);//Вычленяем из текста word
        else
            *(sub + wLen) = 0;//случай кода word вконце строки
    }
    cout<<"Text after remove : "<<text<<endl;
    return 0;
}
0
Миниатюры
Удалить из строки все подстроки  
03.08.2012, 14:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.08.2012, 14:35
Привет! Вот еще темы с ответами:

Распечатать все строки данного файла, содержащие заданную строку в качестве подстроки - C++
Распечатать все строки данного файла, содержащие заданную строку в качестве подстроки. Имя файла и строка задаются в командной строке. ...

Как из строки удалить все нечетные слова, а все чётные вывести перевернутыми? - C++
Подскажите пожалуйста, я не понимаю, как удалить нечётные слова из строки. Возможно, кто-то сможет написать пример или скинуть статью где...

Определить длину строки,удалить из строки все символы, которые равны заданному - C++
Доброго времени суток уважаемые форумчане. Помогите пожалуйста с написанием кода для данной задачи в вижуале. Если будет возможно,то с...

Строки. В каждом чётном по порядку слове удалить все нечётные буквы, а в каждом нечётном слове удалить все чётные буквы. - C++
8.4.1. Помогите, пожалуйста, решить задачу в С++. Дана строка символов, состоящая из русских слов, разделённых пробелами. В...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru