Добавил:
Kaz
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лаба 4 Без названия / LABA4
.CPP#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();
}