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

Заменить в строке все вхождения подстроки str1 на подстроку str2 - C++

Восстановить пароль Регистрация
 
slavnayanata
0 / 0 / 0
Регистрация: 29.03.2011
Сообщений: 6
29.03.2011, 11:16     Заменить в строке все вхождения подстроки str1 на подстроку str2 #1
заменить в строке все вхождения подстроки str1 на подстроку str2
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.03.2011, 11:16     Заменить в строке все вхождения подстроки str1 на подстроку str2
Посмотрите здесь:

Заменить первые вхождения заданной подстроки S1 на заданную подстроку S2 C++
C++ Написать програму которая заменяет все Enter и Tab в строке str1 на сымволи '\n' и '\t' в строке str2.
Заменить в строке все вхождения подстроки str1 на подстроку str2 C++
Заменить в строке все вхождения одной подстроки на другую C++
C++ Функцию, которая получает два параметра str1 и str2 типа string и возвращает позицию начала последнего появления str2 в str1
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
IrineK
Заблокирован
29.03.2011, 11:51     Заменить в строке все вхождения подстроки str1 на подстроку str2 #2
Библиотечные функции можно использовать или нет?
slavnayanata
0 / 0 / 0
Регистрация: 29.03.2011
Сообщений: 6
29.03.2011, 13:02  [ТС]     Заменить в строке все вхождения подстроки str1 на подстроку str2 #3
в условии ничего не сказано, наверно можно
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
29.03.2011, 13:27     Заменить в строке все вхождения подстроки str1 на подстроку str2 #4
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <string>
 
int main(){
    std::string text="1234 1267812890", oldStr="12", newStr="BCD";
    std::string::size_type ind=0;
    while((ind=text.find(oldStr, ind))!=std::string::npos){
        text.replace(ind, oldStr.size(), newStr);
    }
    std::cout<<text<<"\n";
}
slavnayanata
0 / 0 / 0
Регистрация: 29.03.2011
Сообщений: 6
29.03.2011, 14:22  [ТС]     Заменить в строке все вхождения подстроки str1 на подстроку str2 #5
спасибо огромное!
kreedz
 Аватар для kreedz
6 / 6 / 1
Регистрация: 29.11.2009
Сообщений: 100
03.04.2011, 15:38     Заменить в строке все вхождения подстроки str1 на подстроку str2 #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
25
#include <iostream>
 
using namespace std;
 
int main() {
    const int N = 10, N_ = 255;
    cout << "Ввод искомого слова:\n";
 
    char *word = new char [N], *word2 = new char [N];
    cin.getline(word, N);
 
    cout << "\nЗаменить словом:\n";
    cin.getline(word2, N);
 
    cout << "\nВвод текста:\n";
    char *text = new char [N_]
    cin.getline(text, N_);
 
    while (char *p = strstr(text, word))
        while (*p++ = *word2++);
 
 
    cout << endl << text;
    return 0;
}
На ввод:
Ввод искомого слова:
qwerty

Заменить словом:
keyboard

Ввод текста:
mouse qwerty flatron
На выводе:
mouse keyboard
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
03.04.2011, 17:32     Заменить в строке все вхождения подстроки str1 на подстроку str2 #7
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<stdio.h>
#include<string.h>
 
int main(){
    char* text="1234 1267812890", text1[BUFSIZ], *oldStr="12", *newStr="BCD", *p=text, *p1=text1, *p2=text;
    while(p2=strstr(p2, oldStr)){
        for(; p!=p2; ++p, ++p1){
            *p1=*p;
        }
        p1=strncpy(p1, newStr, strlen(newStr))+strlen(newStr);
        p2=p+=strlen(oldStr);
    }
    for(; *p1=*p; ++p, ++p1);
    printf("text1= %s", text1);
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.04.2011, 17:53     Заменить в строке все вхождения подстроки str1 на подстроку str2
Еще ссылки по теме:

C++ STL. Заменить в строке S все вхождения подстроки S1 на подстроку S2
C++ Заменить в строке все вхождения подстроки str1 на подстроку str2

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

Или воспользуйтесь поиском по форуму:
kreedz
 Аватар для kreedz
6 / 6 / 1
Регистрация: 29.11.2009
Сообщений: 100
03.04.2011, 17:53     Заменить в строке все вхождения подстроки str1 на подстроку str2 #8
igorrr37,
спасибо, пойду разбираться
Yandex
Объявления
03.04.2011, 17:53     Заменить в строке все вхождения подстроки str1 на подстроку str2
Ответ Создать тему
Опции темы

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