vg101 recitation 10
DESCRIPTION
VG101 RECITATION 10. By TAs. CONTENTS. File I/O Pointer in database design About final exam Q & A. FILE I/O. #include #include #include using namespace std;. void main() { ifstream infile; string fileName; cin >> fileName; - PowerPoint PPT PresentationTRANSCRIPT
FILE I/O 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"; } }
#include <iostream>#include <fstream>#include <string>using namespace std;
File modes
To use .c_str(), you need to include thisCheck 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