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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 41, средняя оценка - 4.73
liana_23_
0 / 0 / 0
Регистрация: 13.10.2011
Сообщений: 138
#1

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

22.02.2012, 19:30. Просмотров 6033. Ответов 11

заменить в строке все вхождения подстроки str1 на подстроку str2
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.02.2012, 19:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Заменить в строке все вхождения подстроки str1 на подстроку str2 (C++):

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

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

Заменить все вхождения str1 на str2 (str1 вводится из файла, а str2 - с клавиатуры) - C++
заменить все вхождения подстроки str1 на подстроку str2; строка str1 вводится из файла, а строка str2 с клавиатуры {Ha C++}

STL. Заменить в строке S все вхождения подстроки S1 на подстроку S2 - C++
Даны строки S, S1 и S2 вводимые с клавиатуры. Требуется заменить в строке S все вхождения подстроки S1 на подстроку S2. (Например,...

Написать програму которая заменяет все Enter и Tab в строке str1 на сымволи '\n' и '\t' в строке str2. - C++
а если не сложно то можно функцию

Функцию, которая получает два параметра str1 и str2 типа string и возвращает позицию начала последнего появления str2 в str1 - C++
Напишите функцию rightposition, которая получает два параметра str1 и str2 типа string и возвращает позицию начала последнего появления...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
-=ЮрА=-
Заблокирован
Автор FAQ
29.02.2012, 16:43 #2
liana_23_, язык С/С++???
liana_23_
0 / 0 / 0
Регистрация: 13.10.2011
Сообщений: 138
29.02.2012, 17:34  [ТС] #3
с++
-=ЮрА=-
Заблокирован
Автор FAQ
29.02.2012, 18:12 #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ

Не по теме:

liana_23_, я отлучался, сейчас напаяю не унывайте, попеййте кофейку и через мин 10 заберёте код



Добавлено через 23 минуты
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
27
28
29
30
31
32
33
34
35
36
#include <iostream>
#include <cstdlib>
#include <cstring>
using namespace std;
 
int main()
{
    char text[1024];
    char sBuf[1024];
    char str1[32];
    char str2[32];
    long sLen;
    long sPos;
 
    cout<<"Enter input text(less than 1024 chars)\n";
    cin.getline(text,1024);
    cout<<"Enter str1 : ";
    cin.getline(str1,32);
    cout<<"Enter str2 : ";
    cin.getline(str2,32);
 
    char * s = strstr(text,str1);
    while(s)
    {
        sLen = strlen(text);
        sPos = sLen - strlen(s);
        strcpy(sBuf,s + strlen(str1));
        text[sPos] = '\0';
        strcat(text,str2);
        strcat(text,sBuf);
        s = strstr(text,str1);
    }
    cout<<"String after replacing\n"<<text<<endl;
    system("pause");
    return 0;
}
Я решил не заморачиваться и сделал максимально просто. Если нужно будет по-умней пишите сделаю поинтересней - просто привык что пользователям лучше то что попроще
Миниатюры
Заменить в строке все вхождения подстроки str1 на подстроку str2  
-=ЮрА=-
Заблокирован
Автор FAQ
29.02.2012, 18:25 #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
liana_23_, код ниже использует все достоинства класса string
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
27
28
#include <iostream>
#include <cstdlib>
#include <string>
using namespace std;
 
int main()
{
    string text;
    string str1;
    string str2;
    long sPos;
 
    cout<<"Enter input text\n";
    getline(cin,text);
    cin.ignore();
    cout<<"Enter str1 : ";
    getline(cin,str1);
    cin.ignore();
    cout<<"Enter str2 : ";
    getline(cin,str2);
    cin.ignore();
 
    while((sPos = text.find(str1,0)) != string::npos)
        text.replace(sPos,str1.length(),str2);
    cout<<"String after replacing\n"<<text<<endl;
    system("pause");
    return 0;
}
PS:Я писал в 6-й версии студии поєтому если у вас поновей возможно cin.ignore(); не понадобится, чуть позже как будет под рукой 9-ка проверю
liana_23_
0 / 0 / 0
Регистрация: 13.10.2011
Сообщений: 138
29.02.2012, 19:13  [ТС] #6
чё то как то всё сложно здесь
-=ЮрА=-
Заблокирован
Автор FAQ
29.02.2012, 22:56 #7
Цитата Сообщение от liana_23_ Посмотреть сообщение
чё то как то всё сложно здесь
- какой именно код вызвал трудности с пониманием???Кстат вод быстрый лаконичный код

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
возможно cin.ignore(); не понадобится,
- как оказалось чутьё меня не подвело, прикрепяю аттачем готовый проект в VisualStudio 9.0
Миниатюры
Заменить в строке все вхождения подстроки str1 на подстроку str2  
Вложения
Тип файла: rar strrepl_proj.rar (4.0 Кб, 66 просмотров)
fedyar1k
Сообщений: n/a
06.12.2012, 21:23 #8
-=ЮрА=-, а можно тоже самое но на языке С?буду очень признателен!
nurtay1994
0 / 0 / 0
Регистрация: 21.04.2013
Сообщений: 12
21.04.2013, 12:50 #9
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Если нужно будет по-умней пишите сделаю поинтересней
по-умней можете написать (просто очень нужно!!)!!
Croessmah
Модератор
Эксперт CЭксперт С++
13147 / 7410 / 830
Регистрация: 27.09.2012
Сообщений: 18,244
Записей в блоге: 3
Завершенные тесты: 1
21.04.2013, 14:41 #10
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
 
 
int main(){
    setlocale(LC_ALL,"russian");
    std::string str("Заменяем все вхождения ДЛЯ МЕНЯ строки на другую. Не хватает ДЛЯ МЕНЯ рюмки.");
    std::string findstr="ДЛЯ МЕНЯ";
    std::string replacestr="одной";
    std::string::size_type index;
    while((index=str.find(findstr))!=std::string::npos) 
        str.replace(index, findstr.size(), replacestr);
    std::cout<<str<<std::endl;
    return 0; 
}
-=ЮрА=-
Заблокирован
Автор FAQ
21.04.2013, 18:16 #11
Croessmah, в моем посте №6 тот же стринг-риплэйс


Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
while((sPos = text.find(str1,0)) != string::npos)
* * * * text.replace(sPos,str1.length(),str2);
Цитата Сообщение от nurtay1994 Посмотреть сообщение
по-умней можете написать (просто очень нужно!!)!!
- Сойдёт?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void CMFCReplStrDlg::OnReplace() 
{
    // TODO: Add your control notification handler code here
    UpdateData(TRUE);
    if(!m_Input.GetLength())
        AfxMessageBox("Входной текст не сожержит ни единого символа");
    else
    if(!m_What.GetLength())
        AfxMessageBox("Заменяемый текст не введен");
    else
    if(!m_Replace.GetLength())
        AfxMessageBox("Текст для замены не введен");
    else
    {
        m_Output = m_Input;
        m_Output.Replace(m_What, m_Replace);
    }
    UpdateData(FALSE);
}
ЗЫ : Текст взят отсюда http://ru.wikipedia.org/wiki/C%2B%2B
Миниатюры
Заменить в строке все вхождения подстроки str1 на подстроку str2  
Вложения
Тип файла: rar MFCReplStr.exe.rar (3.9 Кб, 4 просмотров)
Тип файла: rar MFCReplStr_proj.rar (22.3 Кб, 8 просмотров)
nurtay1994
0 / 0 / 0
Регистрация: 21.04.2013
Сообщений: 12
21.04.2013, 19:28 #12
Большое - пребольшое вам СПАСИИИБООО!!!!!!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.04.2013, 19:28
Привет! Вот еще темы с ответами:

Заменить в строке все вхождения одной подстроки на другую - C++
помогите пожалуйста с решением задачи! замените в строке все вхождения одной подстроки на другую в с++.

Заменить первые вхождения заданной подстроки S1 на заданную подстроку S2 - C++
Помогите решить задачку пож. 1. Заменить первые вхождения заданной подстроки S1 на заданную подстроку S2 2. Удалить первые вхождения...

Функция определяющая наличие символов строки str2 в строке str1 - C++
Написать и протестировать функцию STRS(str1, str2), которая определяет, встретился ли в строке str1 какой-нибудь символ из строки str2.

Определить, встретился ли в строке str1 какой-нибудь символ из строки str2 - C++
Нужно написать и протестировать функцию STRS(str1, str2), которая определяет, встретился ли в строке str1 какой-нибудь символ из строки...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
21.04.2013, 19:28
Ответ Создать тему
Опции темы

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