1 / 19

File Handling

File Handling. Read data from file and display it on screen. #include< iostream.h > #include< fstream.h > int main() { /* fin object is created with parameterzied constructor */ ifstream fin("in.txt "); //file will be searched in current directory char ch ; while( fin ) {

ina-carey
Download Presentation

File Handling

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. File Handling

  2. Read data from file and display it on screen #include<iostream.h> #include<fstream.h> int main() { /* fin object is created with parameterzied constructor */ ifstreamfin("in.txt"); //file will be searched in current directory char ch; while(fin) { fin>>ch; cout<<ch; } return 0; }

  3. Read data from file and display it on screen #include<iostream.h> #include<fstream.h> int main() { ifstreamfin(“c:\\in.txt"); //give full path of file char ch; while(fin.eof() == 0) { fin>>ch; cout<<ch; } return 0; }

  4. Read data from file and display it on screen #include<iostream.h> #include<fstream.h> int main() { /* fin is created with default constructor so use open() to open file */ ifstreamfin; fin.open(“in.txt”); char ch; while(fin.eof() == 0) { fin>>ch; cout<<ch; } return 0; }

  5. Read data from one file and save it on two different file depending on condition while(fin) { fin>>ch; if(ch >=65 && ch <=124) fout1<<ch; else if(ch >=48 && ch <=57) fout2<<ch; cout<<ch; }  fin.close(); fout1.close(); fout2.close(); return 0; } #include<iostream.h> #include<fstream.h> int main() { ofstream fout1,fout2; fout1.open("alpha.txt"); fout2.open("digits.txt"); ifstream fin; fin.open("in.txt"); char ch;

  6. Take data from user store it in file again read data from file and display it on screen. f.open("item.txt",ios::in); f>>name; f>>cost; cout<<"\n Item name :"; cout<<name; cout<<"\n Cost :"; cout<<cost; f.close(); return 0; } #include<iostream.h> #include<fstream.h> int main() { fstream f; f.open("item.txt",ios::out); char name[20]; float cost; cout<<"\n Enter item name"; cin>>name; f<<name<<"\n"; cout<<"\n Enter cost"; cin>>cost; f<<cost<<"\n"; f.close();

  7. Use of getline function #include<iostream.h> #include<fstream.h> int main() { ifstream fin("item.txt"); char line[80]; while(fin) { fin.getline(line,80); cout<<endl<<line; } return 0; }

  8. Functions for manipulation of file pointers • seekg() Moves get pointer to a specified location • seekp() Moves put pointer to a specified location. • tellg() Gives the current position of the get pointer • tellp() Gives the current position of the put pointer • E.g. fin.seekg(10); int p = fout.tellp();

  9. Example of seekg() /*moves get pointer to 1st location*/ f.seekg(0); f>>name; f>>cost; cout<<"\n Item name :"; cout<<name; cout<<"\n Cost :"; cout<<cost; return 0; } int main() { fstream f; f.open("item.txt",ios::in | ios::out); char name[20]; float cost; cout<<"\n Enter item name"; cin>>name; f<<name<<"\n"; cout<<"\n Enter cost"; cin>>cost; f<<cost<<"\n";

  10. Example of seekg() /*moves get pointer to 3rd location*/ f.seekg(3); f>>name; f>>cost; cout<<"\n Item name :"; cout<<name; cout<<"\n Cost :"; cout<<cost; return 0; } int main() { fstream f; f.open("item.txt",ios::in | ios::out); char name[20]; float cost; cout<<"\n Enter item name"; cin>>name; f<<name<<"\n"; cout<<"\n Enter cost"; cin>>cost; f<<cost<<"\n";

  11. Functions with offset • seekg(offset,refposition) • Seekp(offset,refposition) • Offset represents number of bytes the file pointer is to be moved from the location specified by the parameter refposiotion. • Refposition takes one of the form specified in ios class (constant) • ios::beg beginning of file • ios::curcureent position of the pointer • ios::end end of the file

  12. Pointer offset calls

  13. Reading and Writing Class object • read() is used to read object data from file • Syntax read( (char *) &obj_name , sizeof(obj_name)) • write() is used to write object data to the file • Syntax write((char *) &obj_name, sizeof(obj_name))

  14. Example int main() { item ob[3]; fstream f; f.open("stock.dat",ios::in | ios::out); cout<<"\n enter details for items"; for(int i=0;i<3;i++) { ob[i].readdata(); f.write( (char *) &ob[i],sizeof(ob[i])); } cout<<"\n Output : "; for(i=0;i<3;i++) { f.read((char*) &ob[i] , sizeof(ob[i])); ob[i].writedata(); } return 0; } #include<iostream.h> #include<fstream.h> #include<iomanip.h> class item { char name[20]; float cost; public: void readdata(); void writedata(); }; void item::readdata() { cout<<"\n Enter item name: "; cin>>name; cout<<"\n Enter item Cose: "; cin>>cost; } void item::writedata() { cout<<setiosflags(ios::left)<<setw(10)<<name; cout<<endl<<setprecision(2)<<cost; }

  15. Error handling during file operations • eof() Returns true if end of file encountered • fail() Returns true when input or output operation has failed • bad() Returns true invalid option is attempted(used for fatal errors) • good() Returns true if no error has occurred .

  16. Command line Argument #include<iostream.h> #include<fstream.h> int main(int argc,char *argv[]) { if(argc < 2) cout<<“\n Insufficient argunents “; else { ifstream fin(argv[1]); char ch; while(fin) { fin>>ch; cout<<ch; } return 0; }

  17. Advanced features in c++ • Mutable keyword • Namespace • RTTI (runtime type identification) 1. using typeid(ptr name).name() 2. dynamic_cast e.g mp = dynamic_cast<myclass*>(b); • Smart Pointers

  18. Typecasting in c++ 3.Conversion from void pointer void *vptr; float *fptr; fptr = static_cast<float*> vptr; 4. Upcasting safe Base *bptr; Bptr = static_cast<base *>(&d); 5. Conversion Use traditional casting for converting from one class to another. Sample *s; s= static_cast<sample *>(bptr) //error s= (sample *) bptr; • Static_cast 1.Castless conversion int i=10; float f; f=i; Explicit conversion f = static_cast<float> i; 2. Narrowing conversion i= static_cast<int> f;

  19. Cont…. • Const_cast const int a =10; int *p ; p= const_cast<int *> (&a); If we want to change data member in const function e.g. (const_cast<sample *>(this))->data = 30; • reinterprete_cast Used to change from pointer to integer and vice versa int *iptr = reinterprete_cast<int *>a;

More Related