220 likes | 392 Views
File Input in HiC. Run menu Set Input File… Load Input Input (Interactive) (Batch) OK We want to know how to do it ourselves, right?. Review: Standard Input/Output Stream. // Header file #include <iostream> int size; float avg; cin >> size; // cin: Standard input stream
E N D
File Input in HiC • Run menu • Set Input File… • Load Input • Input (Interactive) • (Batch) • OK We want to know how to do it ourselves, right?
Review: Standard Input/Output Stream // Header file #include <iostream> int size; float avg; cin >> size; // cin: Standard input stream // >>: input operator cout << "Average is " << avg; // cout: standard output stream // <<: output operator
Header File <iostream> // Input stream class istream { private: // Members: public: bool eof(); void get(char& x); void getline(char s[], int size, char endChar); … }; istream cin; // Variable of istream // connecting cin to keyboard
Header File <iostream> // Output stream class ostream { private: // Members public: bool good(); bool fail(); … }; ostream cout; // Variable of ostream // connecting cout to monitor
Standard Error Stream cerr << “Error message.”; // cerr: Standard error stream // always go to monitor // Not working in HiC
Header File for File I/O // File Stream #include <fstream> // Input File Stream class ifstream { … }; // Output File Stream class ofstream { … };
Class ifstream // File Stream #include <fstream> class ifstream { private: . . . public: void open(const char fileName[]); // HiC cannot use C++ string for fileName bool good(); bool fail(); void close(); bool eof(); void get(char& x); … };
Class ofstream // File Stream #include <fstream> class ofstream { private: . . . public: void open(const char fileName[]); // Not C++ string void close(); bool good(); bool fail(); … };
File Input/Output #include <fstream> // Defines class ifstream and ofstream int main() { // use any identifiers you want ifstream MyInput; ofstream yourOutFile; ifstream p7_File, cin_redirect; ofstream P6Out, cout_redirect; . . . return 0; }
File Input/Output #include <fstream> int main() { ifstream MyInput; // Open file // void open(const char fileName[]); MyInput.open(“P6.IN"); // P6.IN is in the same folder as the source file MyInput.open(“J:\\P6.IN"); // P6.IN could be any where // Escape char ‘\’ // Do work MyInput.close(); // void close(); // No parameter! return 0; }
Checking Open Operation #include <iostream> #include <fstream> int main() { ifstream MyInput; MyInput.open(“P6.IN"); // Check open operation if (!MyInput.good()) cout << "Error: Cannot open input file"; return 0; }
Checking Open Operation #include <iostream> #include <fstream> int main() { ifstream MyInput; MyInput.open(“P6.IN"); // Check open operation if (MyInput.fail()) { cout << "Error: Cannot open input file"; return 1; } // Do work return 0; }
File Input/Output #include <iostream> #include <fstream> int main() { ifstream MyInput; ofstream yourOutFile; MyInput.open(“P6.IN"); if (MyInput.fail()) { cout << "Error: Cannot open input file!"; return 1; } yourOutFile.open(“p6.out”); if (!yourOutFile.good()) { cout << "Error: Cannot open output file!"; return 1; } … return 0; }
File Input/Output #include <iostream> #include <fstream> int main() { ifstream MyInput; ofstream yourOutFile; MyInput.open(“P6.IN"); yourOutFile.open(“P6.out”); // Check open file int x; MyInput >> x; // cin >> x; while (!MyInput.eof()) // cin.eof() { // process data x ++; // output to file yourOutFile << x; // cout << x; // read the next value MyInput >> x; } return 0; }
File Input/Output #include <iostream> #include <fstream> int main() { ifstream MyInput; ofstream yourOutFile; int x; MyInput.open(“P6.IN"); yourOutFile.open(“p6.out”); if (MyInput.fail() || !yourOutFile.good()) { cout << "Error: Cannot open files!"; return 1; } MyInput >> x; while (!MyInput.eof()) { x ++; yourOutFile << x; MyInput >> x; } MyInput.close(); yourOutFile.close(); return 0; }
File Input/Output // DO_01: Include header file for file I/O int main() { // DO_02: declare variables for file I/O // DO_03: open file // DO_04: Check open operation // DO_05: Read value from a file // DO_06: Fill condition: read until the end of file while ( ) { // DO_07: Output value to a file } // DO_08: Close files }
Function get() int main() { char x; cin.get(x); while(!cin.eof()) { if (x == ' ') // process a space else if (x == '\n') // process a new line char else // process a regular char cin.get(x); } return 0; } // cin >> x will skip all white spaces. // cin.get() will read in white spaces.
Function get() int main() { char x; ifstream MyInput(“P6.in"); MyInput.get(x); while(!MyInput.eof()) { if (x == ' ') // process a space else if (x == '\n') // process a new line char else // process a regular char MyInput.get(x); } return 0; } // MyInput >> x will skip all white spaces. // MyInput.get() will read in white spaces.
Input File Name #include <iostream> #include <fstream> int main() { char file_name[21]; // Cannot use data type string for file_name ifstream MyInput; cout << “Enter input file name: ”; cin >> file_name; MyInput.open(file_name); // MyInput.open(“P6.IN"); // MyInput.open(“file_name”); NO! // Check open operation if (!MyInput.good()) { cout << "Error: Cannot open input file!"; return 1; } // Do work MyInput.close(); return 0; }
File Stream as Function Parameter int main() { ifstream MyInput; if (!OpenFile(MyInput)) return 1; // Do work return 0; } bool OpenFile(ifstream& inFile) { char file_name[21]; cin >> file_name; inFile.open(file_name); if (!inFile.good()) { cout << "Error: Cannot open input file"; return false; } else return true; }
Schedule Quiz9–3 9 AM, Monday Test 3 Next Monday Final Exam 7:00-8:52 pm, Thursday, May 19, 2011, Doudna 103
Test 3 • Classes data members (fields) constructors methods • Selection Sorting • File I/O • Enumeration data type • C String (Array of char )