Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > замена строки на строку


Автор: g27 30.3.2009, 22:36
Здравствуйте, хотел бы узнать если ли в С++ аналог функции PHP str_replace. Или подскажите как бы получше это можно сделать средствами С++. Спасибо

Автор: IKM2007 30.3.2009, 22:48
Код

string a ("Hello, ");
string b ("World!");
cout << a << b << endl;
a.swap (b);
cout << a << b << endl;

Автор: g27 30.3.2009, 22:59
это местами меняет, а мне надо удалить одно и вместо него другое вставить

Автор: Dmi3ev 30.3.2009, 23:01
Код

#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
    int i=0;
    string s1="I want change it";
    string s2="want";
    string s3="this is my new text";
    cout<<"before: "<<s1<<endl;
    while ((i=s1.find(s2,i+1))!=string::npos)
        s1.replace(i,s2.length(),s3);
    cout<<"after: "<<s1<<endl;
    system("pause");
    return 0;
}

Автор: g27 30.3.2009, 23:16
спасибо.

Автор: Dmi3ev 30.3.2009, 23:22
пожалуйста  smile 

Автор: Soah 30.3.2009, 23:25
Код

string s1="I want change it";
string s2="want";
string s3="you want";

 smile 

Автор: Dmi3ev 30.3.2009, 23:26
Soah, ты чего???

Автор: Soah 30.3.2009, 23:34
Dmi3ev, вечный цикл smile 

Автор: Dmi3ev 30.3.2009, 23:42
Цитата

Dmi3ev, вечный цикл 

да я суть показал, можно доработать...
просто дело в том, что в данном маленьком примере я больше старался показать товарищу инструменты для решения задачи, чем вылизать код... 

Автор: Soah 30.3.2009, 23:45
Цитата(Dmi3ev @  30.3.2009,  23:42 Найти цитируемый пост)
да я суть показал, можно доработать...

тогда понятно, но надо было предупредить что код следует доработать

Автор: Dmi3ev 30.3.2009, 23:58
Soah, ты прав!

g27, тогда вот так надо примерно...
Код

#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;

int _tmain()
{
    int i=0;
    string s1="I want change it";
    string s2="want";
    string s3="you want";
    cout<<"before: "<<s1<<endl;
    while ((i=s1.find(s2,i))!=string::npos)
    {
        s1.replace(i,s2.length(),s3);
        i+=s3.length();
    }
    cout<<"after: "<<s1<<endl;
    system("pause");
    return 0;
}

Автор: Riddik 31.3.2009, 02:05
 smile 

Сорри за оффтоп, но чем _tmain() отличается от main()?

Автор: Anikmar 31.3.2009, 07:27
Цитата(Riddik @  31.3.2009,  02:05 Найти цитируемый пост)
Сорри за оффтоп, но чем _tmain() отличается от main()? 


В зависимости от настроек компилятора становится либо ASCII версией main либо UNICODE

Автор: Riddik 31.3.2009, 10:42
Anikmar, спасибо smile 

Автор: IKM2007 31.3.2009, 20:16
Цитата(g27 @  30.3.2009,  22:59 Найти цитируемый пост)
это местами меняет, а мне надо удалить одно и вместо него другое вставить


Код

string a = "Text1", b = "Text2";
a = b;// a = "Text2"


Dmi3ev, зачем все это?

Автору топика: возьми книжку и прочти про функции-члены библиотек <cstring> и <string>.

Автор: Anikmar 31.3.2009, 20:31
Цитата(IKM2007 @  31.3.2009,  20:16 Найти цитируемый пост)
Автору топика: возьми книжку и прочти про функции-члены библиотек <cstring> и <string>. 

А что, в этих библиотеках есть искомый аналог?

Автор: Dmi3ev 31.3.2009, 20:46
Цитата

Dmi3ev, зачем все это?


IKM2007, я чего-то не пойму к чему ты?
надо заменить один фрагмент текста другим, при этом остальной текст оставить без изменений, что собственно я и делаю...
что не так?
я действительно не знаю гораздо более простого решения... если знаешь, то поделись...
Цитата

string a = "Text1", b = "Text2";
a = b;// a = "Text2"

а это на что намек, не понял???

Автор: IKM2007 1.4.2009, 15:43
Цитата(Dmi3ev @  31.3.2009,  20:46 Найти цитируемый пост)
надо заменить один фрагмент текста другим, при этом остальной текст оставить без изменений

Неправильно понял вопрос. Только теперь понял.Извиняюсь.    smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)