Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.01.2014, 18:11   #1
KyKi
 
Регистрация: 12.09.2013
Сообщений: 7
По умолчанию Работа со строками в С++

Задача: Дан текстовый файл f. Сформировать файл h, заменив каждое вхождение слова «это» на слово «то». Слова – группы символов, разделенные про-белом или признаком конца строки.
Никак не разберусь именно с заменой,подскажите пожалуйста,как это можно сделать.

Код:
#include <iostream>
#include <fstream>  
#include <cstring>      
using namespace std;
 
const int k=40;
 
void Create_file(char fname[], ofstream &fout)  //функция создания файла
{
    setlocale(LC_ALL, "Russian");
    char st[k]; 
    fout.open(fname);   
    cout<<"\n Введите строку:"<<endl;
    cin>>st;    
    do 
    {
        fout<<st;   //записать в файл fout строку st
        fout<<"\n"; //запись в файл признака конца строки
        cin.getline(st,k);      
    }
    while (st[0]!='*'); 
    fout.close();       
}
 
 
void Read_file(char fname[],ifstream &fin)  //функция чтения файла
{
    char st[k]; 
    fin.open(fname);    
    cout<<"\n Содержимое файла "<<fname<<": ";
    while (fin.getline(st,k))   //прочитать из файла строку st, пока не конец файла
    {  
        cout<<"\n Строка после замены:"<<st<<endl;  
        cout<<endl;
    };
    fin.close();    
}
 
void Change_filef(char fname[],char hname[],char s[k],ifstream &fin,ofstream &hout) //функция замены "это" на "то"
{
    setlocale(LC_ALL, "Russian");
    char st[k];
    fin.open(fname);    //открыть файл f для чтения
    hout.open(hname); //открыть файл h для записи
    cout<<"Введите строку в которой необходимо заменить все слова ""это"" на ""то"": "; 
    cin>>s; //ввод строки для замены
    while (fin.getline(st,k))   //прочитать из файла строку st, пока не конец файла
    {  
        //вот тут не понимаю как сделать замену:(
    }
    hout.close();       //закрытие файла gout
    fin.close();        //закрытие файла fin
}
 
void main()     
{
  ofstream fout, hout;  
  ifstream fin,hin;     
  char st[k],s[k];
  char fname[k],hname[k];
  cout<<"\n Введите имя начального файла: "<<endl;
  cin>>fname;
  Create_file(fname,fout);  
  Read_file(fname,fin); 
  cout<<"\n Введите имя конечного файла: "<<endl;
  cin>>hname;
  Change_filef(fname,hname,s,fin,hout); 
  Read_file(hname,hin); 
}
KyKi вне форума Ответить с цитированием
Старый 04.01.2014, 01:04   #2
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Пример операции замены подстроки в строке:
Код:
int main(){
    char *text="bbbbbbaaaaabbbbb", res[BUFSIZ], *sWhat="bbb", *sWith="cccc"
    , *a=text, *b=res;
    for(; *b=*a; ++a, ++b){
        if(!strncmp(a, sWhat, strlen(sWhat))){
            strcpy(b, sWith);
            a+=strlen(sWhat)-1;
            b+=strlen(sWith)-1;
        }
    }
    puts(res);
    return 0;
}
Streletz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C# Работа со строками! Vikor666 Помощь студентам 0 03.12.2011 16:13
Работа со строками в C++ telogrejka Помощь студентам 6 27.02.2011 20:32
работа со строками CHOSEN1 Помощь студентам 2 23.12.2010 15:00
Работа с матрицами (норма матрицы, работа со строками) Neitrosha Помощь студентам 1 26.11.2010 20:19
Работа со строками pant Помощь студентам 2 30.12.2008 17:12