Скачиваний:
9
Добавлен:
15.06.2014
Размер:
3.65 Кб
Скачать
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <fstream.h>
#include <ctype.h>

class string{
   friend ostream& operator<<(ostream&,const string&);
   friend istream& operator>>(istream&,const string&);

public:
   string(int=255);
   string(char*);
   string(const string&);
   ~string();
   const string& operator=(const string&);
   const string& operator=(const char*);
   string& operator+(const string&);
   string& operator-(const string&);
   operator char*() {return st;}
   int operator<(const string&);
   int operator>(const string&);
   int operator==(const string&);

private:
   char *st;

}

string::string(int len){
   st=new char[len+1];
   strcpy(st,"");
}

string::string(char *s){
   st=new char[strlen(s)+1];
   strcpy(st,s);
}

string::string(const string &s){
   st=new char[strlen(s.st)+1];
   strcpy(st,s.st);
}

string::~string(){
   delete[] st;
}

const string& string::operator=(const string &st1){
   delete[] st;
   st=new char[strlen(st1.st)+1];
   strcpy(st,st1.st);
   return *this;
}

const string& string::operator=(const char*s){
   delete[] st;
   st=new char[strlen(s)+1];
   strcpy(st,s);
   return *this;
}

string& string::operator+(const string &st1){
   static string s1;
   char *s=new char[strlen(st)+strlen(st1.st)+1];
   strcpy(s,st);
   strcat(s,st1.st);
   s1=s;
   return s1;
}

string& string::operator-(const string &st1){
   static string s2;
   s2=st;
   int i,j,k,x,len1,len2;
   len1=strlen(st);
   len2=strlen(st1.st);
   if(len2>len1) return s2;
   for(i=0;i<len1-len2;i++){
      x=1;
      for(k=0;k<len2;k++)
	 if(st[i+k]!=st1.st[k]) x=0;
      if(x) break;
   }
   if(!x) return s2;
   for(k=i;k<=i+strlen(st1.st);k++)
      s2.st[k]=s2.st[k+strlen(st1.st)];
   return s2;
}

int string::operator<(const string &st1){
   if(strcmp(st,st1.st)<0) return 1;
   else return 0;
}

int string::operator>(const string &st1){
   if(strcmp(st,st1.st)>0) return 1;
   else return 0;
}

int string::operator==(const string &st1){
   if(strcmp(st,st1.st)==0) return 1;
   else return 0;
}

ostream& operator<<(ostream &output,const string &st1){
   output<<st1.st;
   return output;
}

istream& operator>>(istream &input,const string &st1){
   input>>st1.st;
   return input;
}

class file{

public:
   void zap(string);
   const string rea();
   int endf();
   const string rea_n(int);
   file(char *);
   ~file();

private:
   char *name;
   fstream f;

};

void file::zap(string s){
   f.seekg(0,ios::end);
   f<<s<<endl;
}

string file::rea(){
   char *s=new char[80];
   f>>s;
   string st(s);
   delete[] s;
   return st;
}

int file::endf(){
   if (f.eof()) return 1;
   return 0;
}

const string file::rea_n(int n){
   int k=1,d=80;
   string st;
   char *s=new char[80];
   s[0]='\0';
   f.seekg(0,ios::beg);
   while (!f.eof()){
      f.getline(s,d,'\n');
      if(k==n) break;
      k++;
   }
   if(!f.eof()){
      st=s;
      delete[] s;
      return st;
   }
   else{
      cout<<"stroki s nomerom "<<n<<" net v fajle "<<name<<endl;
      delete[] s;
      return st;
   }
}

file::file(char *str){
   int len=strlen(str);
   name=new char[len+1];
   strcpy(name,str);
   f.open(name,ios::in|ios::out);
}

file::~file(){
   delete[] name;
   f.close();
}

void main(){
   clrscr();
   string s("www1");
   string s2;
   file ff("file.txt");
   file fd("file1.txt");
   s2=ff.rea_n(7);
   s=ff.rea_n(100);
   cout<<s;
   fd.zap(s);
   getch();
}
Соседние файлы в папке Лаба 4 Без названия