Streams and File IO Review STREAMS Review STREAMS
- Slides: 62
Streams, and File I/O Review
STREAMS Review
STREAMS • Streams are sequences of bytes. • C++ I/0 occurs in streams • • Input – bytes flow from device to memory Output – bytes flow from memory to device. Streams are unformatted Programmers add formatting to give meaning. • Kinds of streams: • Standard stream I/O • File Stream I/O • C++ string stream
• ifstream (open primarily for input), ofstream (open primarily for output), and fstream (open for either or both input and output) • All have open member function to connect the program to an external file • All have close member function to disconnect program from an external file when access is finished • Files should be open for as short a time as possible • Always close files before the program ends 13 -4 File Stream Classes
Conversion Classes • istringstream: • Use the stream extraction operator >> to read from the string • ostringstream: • Use the stream insertion operator << to add data onto the string 12 -5
13. 1 Input and Output Streams • Input Stream – data stream from which information can be read • Use istream, ifstream, and istringstream objects to read data • Output Stream – data stream to which information can be written • Ex: cout and monitor screen • Use ostream, ofstream, and ostringstream objects to write data • Input/Output Stream – data stream that can be both read from and written to • Use fstream objects here 13 -6 • Ex: cin and the keyboard
STREAM I/O Review
Memory or Conversion Stream Review
Conversion Classes • istringstream: • contains a string to be converted to numeric values where necessary • Use str(s) to initialize string to contents of s • Use the stream extraction operator >> to read from the string • ostringstream: • collects a string in which numeric data is converted as necessary • Use the stream insertion operator << to add data onto the string • Use str() to retrieve converted string 12 -9
String Stream Application • Input data validation • Read an entire line then scrutinize the data Requires #include <sstream>
1) To format output into an in-memory string object, include the sstream header file and create an ostringstream object #include <sstream> ostringstream out. Str; 13 -11 sstream Formatting
2) Write to the ostringstream object using I/O manipulators, all other stream member functions: out. Str << showpoint << fixed << setprecision(2) << '$'<< amount; 13 -12 sstream Formatting
3) Access the C-string inside the ostringstream object by calling its str member function cout << out. Str. str(); 13 -13 sstream Formatting
13. 2 More Detailed Error Testing • Stream objects have error bits (flags) that are set by every operation to indicate success or failure of the operation, and the status of the stream • Stream member functions report on the settings of the flags 13 -14
Error State Bits Can examine error state bits to determine file stream status ios: : eofbit set when end of file detected ios: : failbit set when operation failed ios: : hardfail set when an irrecoverable error occurred ios: : badbit set when invalid operation attempted ios: : goodbit set when no other bits are set 13 -15
Error Bit Reporting Functions eof() true if eofbit set, false otherwise fail() true if failbit or hardfail set, false otherwise bad() true if badbit set, false otherwise good() true if goodbit set, false otherwise clear() clear all flags (no arguments), or clear a specific flag 13 -16
• Can format with I/O manipulators: they work with file objects just like they work with cout • Can format with formatting member functions • The ostringstream class allows in-memory formatting into a string object before writing to a file 13 -17 Output Formatting with I/O Manipulators
I/O Manipulators left, right left or right justify output oct, dec, hex endl, flush display output in octal, decimal, or hexadecimal write newline (endl only) and flush output showpos, noshowpos do, do not show leading + with non-negative numbers showpoint, noshowpoint do, do not show decimal point and trailing zeroes 13 -18
More I/O Manipulators fixed, scientific use fixed or scientific notation for floating -point numbers setw(n) sets minimum field output width to n setprecision(n) sets floating-point precision to n setfill(ch) uses ch as fill character 13 -19
File Stream Review
• ifstream (open primarily for input), ofstream (open primarily for output), and fstream (open for either or both input and output) • All have open member function to connect the program to an external file • All have close member function to disconnect program from an external file when access is finished • Files should be open for as short a time as possible • Always close files before the program ends 13 -21 File Stream Classes
• fstream object can be used for either input or output fstream file; • To use fstream for input, specify ios: : in as the second argument to open file. open("myfile. dat", ios: : in); • To use fstream for output, specify ios: : out as the second argument to open file. open("myfile. dat", ios: : out) ; 13 -22 The fstream Object
• fstream object can be used for both input and output at the same time • Create the fstream object and specify both ios: : in and ios: : out as the second argument to the open member function fstream file; file. open("myfile. dat", ios: : in|ios: : out); 13 -23 Opening a File for Input and Output
• Stream constructors have overloaded versions that take the same parameters as open • These constructors open the file, eliminating the need for a separate call to open fstream in. File("myfile. dat", ios: : in); 13 -24 Opening Files with Constructors
• Not all combinations of file open modes make sense • ifstream and ofstream have default file open modes defined for them, hence the second parameter to their open member function is optional 13 -25 File Open Modes
• File open modes specify how a file is opened and what can be done with the file once it is open • ios: : in and ios: : out are examples of file open modes, also called file mode flag • File modes can be combined and passed as second argument of open member function 13 -26 File Open Modes
Default File Open Modes • • open for output only file cannot be read from file is created if no file exists file contents erased if file exists • ifstream: • open for input only • file cannot be written to • open fails if the file does not exist 13 -27 • ofstream:
File Mode Flags ios: : app ios: : ate create new file, or append to end of existing file go to end of existing file; write anywhere ios: : binary read/write in binary mode (not text mode) ios: : in open for input ios: : out open for output 13 -28
• A file can be open for input and output simultaneously • Supports updating a file: • read data from file into memory • update data • write data back to file • Use fstream for file object definition: fstream grade. List("grades. dat", ios: : in | ios: : out); 13 -29 13. 7 Opening a File for Both Input and Output
• Stream constructors have overloaded versions that take the same parameters as open • These constructors open the file, eliminating the need for a separate call to open fstream in. File("myfile. dat", ios: : in); 13 -30 Opening Files with Constructors
• The file handle is set to true if a file operation succeeds. It is set to false when a file operation fails • Test the status of the stream by testing the file handle: in. File. open("myfile"); if (!in. File) { cout << "Can't open file"; exit(1); } 13 -31 Detecting File Operation Errors
File Mode Flags ios: : app ios: : ate create new file, or append to end of existing file go to end of existing file; write anywhere ios: : binary read/write in binary mode (not text mode) ios: : in open for input ios: : out open for output 13 -32
• fstream object can be used for both input and output at the same time • Create the fstream object and specify both ios: : in and ios: : out as the second argument to the open member function fstream file; file. open("myfile. dat", ios: : in|ios: : out); 13 -33 Opening a File for Input and Output
• The file handle is set to true if a file operation succeeds. It is set to false when a file operation fails • Test the status of the stream by testing the file handle: in. File. open("myfile"); if (!in. File) { cout << "Can't open file"; exit(1); } 13 -34 Detecting File Operation Errors
Files and Streams • C++ views each file as a sequence of bytes. • Ending with an EOF (end-of-file) marker • When a file is opened, an object is created and a stream is associated with the object. • Required includes: • iostream • fstream (either ifstream or ofstream) 8 -35
Reading and Writing Streams Review
Review Sequential File Processing • CSCI 207 file write
Unlike the extraction operator >>, these reading functions do not skip whitespace: getline: read a line of input get: reads a single character seekg: goes to beginning of input file 13 -38 13. 3 Member Functions for Reading and Writing Files
getline(char s[ ], int max, char stop ='n') • char s[ ]: Character array to hold input • int max : 1 more than the maximum number of characters to read • char stop: Terminator to stop at if encountered before max number of characters is read. Optional, default is 'n' 13 -39 getline Member Function
get(char &ch) Read a single character from the input stream and put it in ch. Does not skip whitespace. ifstream in. File; char ch; in. File. open("my. File"); in. File. get(ch); cout << "Got " << ch; 13 -40 Single Character Input
get() Read a single character from the input stream and return the character. Does not skip whitespace. ifstream in. File; char ch; in. File. open("my. File"); ch = in. File. get(); cout << "Got " << ch; 13 -41 Single Character Input, Again
peek() Read a single character from the input stream but do not remove the character from the input stream. Does not skip whitespace. ifstream in. File; char ch; in. File. open("my. File"); ch = in. File. peek(); cout << "Got " << ch; //same output 13 -42 Single Character Input, with a Difference
• put(char ch) Output a character to a file • Example ofstream out. File; out. File. open("myfile"); out. File. put('G'); 13 -43 Single Character Output
To copy an input file to an output file char ch; infile. get(ch); while (!infile. fail()) { outfile. put(ch); infile. get(ch); } infile. close(); outfile. close(); 13 -44 Example of Single Character I/O
Random Access Files • When you want to get a specific record immediately • C++ does not impose structure (byte stream files only) • Applications that want to use random access files must create them. • Easiest technique : Fixed length record • Allows easy way to calculate position of a particular record 1 100 200 300 400 500 600 700 100 bytes 100 bytes
• seekg (seek get): used with input files • seekp (seek put): used with output files Both are used to go to a specific position in a file 13 -46 Random Access Member Functions
seekg(offset, place) Move to a given offset relative to a given place in the file • offset: number of bytes from place, specified as a long • place: location in file from which to compute offset ios: : beginning of file ios: : end of the file ios: : current position in file 13 -47 Moving About in Input Files
Random-Access Member Functions // Set read position 25 bytes // after beginning of file in. Data. seekg(25 L, ios: : beg); // Set write position 10 bytes // before current position out. Data. seekp(-10 L, ios: : cur); 13 -48 • Examples:
Rewinding a File in. File. seekg(0 L, ios: : beg); • Error or eof bits will block seeking to the beginning of file. Clear bits first: in. File. clear(); in. File. seekg(0 L, ios: : beg); 13 -49 • To move to the beginning of file, seek to an offset of zero from beginning of file
13. 4 Binary Files • Text files store data in which numeric values have been converted into strings of ASCII characters • Files are opened in text mode (as text files) by default 13 -50 • Binary files store data in the same format that a computer has in main memory
Using Binary Files • Pass the ios: : binary flag to the open member function to open a file in binary mode infile. open("myfile. dat", ios: : binary); • Reading and writing of binary files requires special read and write member functions read(char *buffer, int number. Bytes) write(char *buffer, int number. Bytes)
read(char *buffer, int number. Bytes) write(char *buffer, int number. Bytes) • buffer: holds an array of bytes to transfer between memory and the file • number. Bytes: the number of bytes to transfer Address of the buffer needs to be cast to char * using reinterpret_cast <char *> 13 -52 Using read and write
To write an array of 2 doubles to a binary file 13 -53 Using write ofstream out. File("myfile", ios: binary); double d[2] = {12. 3, 34. 5}; out. File. write( reinterpret_cast<char *>(d), sizeof(d));
Using read To read two 2 doubles from a binary file into an array 13 -54 ifstream in. File("myfile", ios: binary); const int DSIZE = 10; double data[DSIZE]; in. File. read( reinterpret_cast<char *>(data), 2*sizeof(double)); // only data[0] and data[1] contain // values
Creating Records
• Can write structures to, read structures from files • To work with structures and files, • use binary file flag upon open • use read, write member functions 13 -56 13. 5 Creating Records with Structures
struct Test. Score { int student. Id; float score; char grade; }; Test. Score test 1[20]; . . . // write out test 1 array to a file grade. File. write( reinterpret_cast<char*>(test 1), sizeof(test 1)); 13 -57 Creating Records with Structures
• Structures to be written to a file must not contain pointers • Since string objects use pointers and dynamic memory internally, structures to be written to a file must not contain any string objects 13 -58 Notes on Structures Written to Files
• Sequential access: start at beginning of file and go through data the in file, in order, to the end of the file • to access 100 th entry in file, go through 99 preceding entries first • Random access: access data in a file in any order • can access 100 th entry directly 13 -59 13. 6 Random-Access Files
• seekg (seek get): used with input files • seekp (seek put): used with output files Both are used to go to a specific position in a file 13 -60 Random Access Member Functions
Random Access Member Functions offset: long integer specifying number of bytes to move place: starting point for the move, specified by ios: beg, ios: : cur or ios: end 13 -61 seekg(offset, place) seekp(offset, place)
Random-Access Member Functions // Set read position 25 bytes // after beginning of file in. Data. seekg(25 L, ios: : beg); // Set write position 10 bytes // before current position out. Data. seekp(-10 L, ios: : cur); 13 -62 • Examples:
- File-file yang dibuat oleh user pada jenis file di linux
- Difference between logical file and physical file
- File sharing management system
- Distributed file system
- An html file is a text file containing small markup tags
- In a file-oriented information system, a transaction file
- Bill nye rivers and streams
- Fan kuan travelers by streams and mountains
- Middle course of a river
- Gulf stream
- Cost streams
- Oracle streams
- Groundwater table
- In the desert, ephemeral streams _____.
- Input output flags
- Data nugget streams as sensors answers
- Broken stream fire fighting
- Illustrate the proper handling of fire streams
- Oracle streams
- Basic concepts in mining data streams
- A framework for clustering evolving data streams
- Antony searle
- Cout.write("objectoriented programming", 6);
- Snull
- Adiabatic chemical dehumidification
- Predefined streams in java
- Gradient definition earth science
- Most streams carry the largest part of their load
- Once there were brook trout in the streams in the mountains
- Poetic techniques in the wild swans at coole
- Disappearing streams karst topography
- Perforce streams tutorial
- Finding frequent items in data streams
- Business model canvas lego
- Copy and paste
- Business model
- Perforce introduction
- Perforce virtual streams
- Discretized stream
- Cba streams
- There's a place where mercy reigns and never dies
- Chapter review motion part a vocabulary review answer key
- Ap gov review final exam review
- Nader amin-salehi
- Systematic review definition
- Narrative review vs systematic review
- Clark county wiznet
- Disadvantages of random file organisation
- In file organization a fixed format is used for records
- File organization and database design
- Advantages of stl file format
- Flat file vs relational database pros and cons
- Module 4 operating systems and file management
- Queen talk facts with a printer and a file
- File and record locking in network programming
- Difference between file and folder
- Geography: realms, regions, and concepts (doc or html) file
- File protection and security
- Advantages of avi
- Java file input and output
- Ib sports, exercise and health science topics
- Sport exercise and health science ib
- Drive googlel