Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Ольчи
0 / 0 / 0
Регистрация: 03.08.2012
Сообщений: 5
03.08.2012, 13:00     Удалить из строки все подстроки #1
Помогите пожалуйста написать функцию удаляющую из строки 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 секунд
помогите исправить
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.08.2012, 13:00     Удалить из строки все подстроки
Посмотрите здесь:

C++ Удалить из строки каждое вхождение подстроки
Удалить из строки все числа C++
C++ Удалить из строки S все подстроки, совпадающие с S0
C++ Определить длину строки,удалить из строки все символы, которые равны заданному
C++ Строки. В каждом чётном по порядку слове удалить все нечётные буквы, а в каждом нечётном слове удалить все чётные буквы.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Пaтрик
 Аватар для Пaтрик
394 / 387 / 38
Регистрация: 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;   
}
Ольчи
0 / 0 / 0
Регистрация: 03.08.2012
Сообщений: 5
03.08.2012, 13:23  [ТС]     Удалить из строки все подстроки #3
а можно реализовать в более развёрнутом виде,чтоб было меньше стандартных функций
MrCold
851 / 749 / 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 );
 
}
-=ЮрА=-
Заблокирован
Автор 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;
}
Миниатюры
Удалить из строки все подстроки  
-=ЮрА=-
Заблокирован
Автор 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;
}
Миниатюры
Удалить из строки все подстроки  
Yandex
Объявления
03.08.2012, 14:35     Удалить из строки все подстроки
Ответ Создать тему
Опции темы

Текущее время: 17:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru