130 likes | 250 Vues
This document provides insights into File Input/Output (I/O) operations in C++, including how to read from and write to files using various modes. It explains the importance of pointers in database design, covering their roles in memory management and dynamic relationships between objects. The document highlights critical concepts for the final exam, focusing on programming skills. Readers will gain knowledge of file manipulation techniques in C++ and the strategic use of pointers to create efficient data structures.
E N D
VG101RECITATION 10 By TAs
CONTENTS • File I/O • Pointer in database design • About final exam • Q & A
FILE I/O #include <iostream> #include <fstream> #include <string> using namespace std; • void main() • { • ifstream infile; • string fileName; • cin >> fileName; • infile.open(fileName.c_str(), ios::in); • if(infile.fail()) • { • cout << "File " << fileName << " don't exist\n"; • return; • } • else • { • cout << "Open file " << fileName << " success\n"; • } • } File modes To use .c_str(), you need to include this Check before using
FILE I/O • File modes: • ios::in: opens a file for input • ios::out: opens a file for output • ios::app: appends all output to the end of the file • ios::ate: opens a file for output. If the file already exists, move to the end of the file. • ios::truct: discards the file’s contents if the file already exists. (default action for ios::out) • ios::binary: opens a file for binary input and output
FILE I/O • To use file modes: infile.open(fileName.c_str(), ios::in); outfile.open(fileName.c_str(), ios::app); • You’ll need ios::app in most cases if you don’t want to overwrite your file data. • For more file modes or useful functions, look up ICP book, chapter 12, or use zhidao.baidu.com
FILE I/O • Check before using any file stream object • For input: • if(infile.fail()) // handle this exception • For output: • ifstream infile; • ofstream outfile; • infile.open(fileName.c_str()); • if( ! infile.fail() ) • { • cout << "File " << fileName << " already exists\n"; • cout << "Do you want to overwrite it?\n"; • // handle user's reply • }
FILE I/O • Alternative way for output check, using file modes: • If you want to append the new data to the end of the original file: • outfile.open(fileName.c_str(), ios::app); • if(outfile.fail()) // handle this exception • If you want to erase the old data in the file and write the new data into it: • outfile.open(fileName.c_str()); • if(outfile.fail()) // handle this exception
FILE I/O • String and char*: • Some functions in C++ are written in C, so these functions don’t recognize string class. • Use “ .c_str() ” to convert a string to char* infile.open(fileName.c_str(), ios::in); • You need to include <string> if you want to use this function as well as many other string functions
POINTER IN DATABASE DESIGN • Why we use pointer: • 1. Pointer is just a variable of an address, it points to an space in memery, so it’s space saving. • 2. A teacher may teach several courses, a classroom may be used by several courses. By using pointer, an object can be referenced by N other objects without creating N objects.
POINTER IN DATABASE DESIGN • 3. If we change teacher A through pointer in course B, when we look through pointer in course C, teacher A is also changed • 4. Using pointer allows us to dynamically add new objects by “new” keyword • 5. Pointer form a web of relationship between unique objects, just as the real world
POINTER IN DATABASE DESIGN • Where we use pointer and where we don’t: • Notice that we use pointer in class DepartmentT and SchoolT, but we don’t do that in class LocationT and InstructorT • School and department is a relationship between instructors, students, classrooms…while instructor is a real object. • Pointer is a tool to handle relationship or reference
ABOUT FINAL EXAM • All materials will be covered • Focus on skills in programming, not on basic concept • Computer part + paper part • Programming style will be graded
Q & A • Any questions regarding • File I/O • Pointer • Exam