Understanding C++ File I/O Operations

Slide Note
Embed
Share

Learn about C++ file I/O operations, including input/output instructions, file handling with ifstream and ofstream, opening multiple files, checking end of file, and a review of the file I/O process. Discover how to write to an ASCII file and read data from it in C++ programming. Practice with examples to enhance your understanding of file input/output operations in C++.


Uploaded on Sep 23, 2024 | 0 Views


Download Presentation

Please find below an Image/Link to download the presentation.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author. Download presentation by click this link. If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.

E N D

Presentation Transcript


  1. What header file contains C++ file I/O instructions? A. iostream.h B. fstream.h C. infstream.h D. outstream.h

  2. ifstream fin; would be used when A. creating a file B. reading a file C. appending a file D. removing a file

  3. How would you output to an open file named a_file? A. a_file.out("Output"); B. a_file="Output"; C. a_file<<"Output"; D. a_file.printf("Output");

  4. It is possible to open several files for access at the same time. A. True B. False

  5. If a file you are opening for appending does not exist, the program will create a new file. A. True B. False

  6. eof( ) is the function used for A. asserting no errors in a file B. appending data to a file C. counting the amount of data in a file D. checking for end of file

  7. Review of the File I/O process // write to an ASCII file #include <iostream> #include <fstream> using namespace std; 1. include the proper header files int main () { ofstream myfile; myfile.open ( test.txt"); 2. create File I/O object (or variable) and link it with the file being processed 3. write to or read from the opened file using the proper operator or functions. For reading from a file, check whether it has reached the end of the file myfile << I am writing to the file.\n"; myfile.close(); return 0; } 4. always remember to close the file

  8. What is the output of this program in the text file? #include <iostream> #include <fstream> using namespace std; int main () { ofstream outStream( output.txt ); char c; for (c = 'A'; c <= 'E'; c++) { outStream << c; } outStream.close(); return 0; }

  9. Given a text file below, what will be output on screen using the following program? #include <iostream> #include <fstream> using namespace std; C++ is a general- purpose programming language. int main () { ifstream inStream ( myfile.txt ); char c; int n = 0; if (!inStream.is_open()) cerr << "Error opening file"; else { while(inStream >> c) { if (c == a') n++; } inStream.close(); cout << n << endl; } return 0; }

  10. Structures

  11. Structure Types Define struct globally (typically) No memory is allocated Just a "placeholder" for what our struct will "look like" Definition: struct CDAccountV1 Name of new struct "type" { double balance; double interestRate; int term; }; REQUIRED semicolon member names This defines a structure type! Not a new variable!!

  12. struct CDAccountV1 { double balance; member names double interestRate; int term; }; REQUIRED semicolon Structure Declare a structure variable CDAccountV1 acct1; Access structure member Dot Operator to access members acct1.balance acct1.interestRate acct1.term Called "member variables" The "parts" of the structure variable Different structs can have same name member variables No conflicts

  13. Structure Pitfall Semicolon after structure definition ; MUST exist: struct WeatherData { double temperature; double windVelocity; }; REQUIRED semicolon! Required since you "can" declare structure variables in this location

  14. Structure Assignments Given structure named CropYield Declare two structure variables: CropYield apples, oranges; Both are variables of "struct type CropYield" Simple assignments are legal: apples = oranges; Simply copies each member variable from apples into member variables from oranges apples oranges

  15. Structures as Function Arguments Passed like any simple data type Pass-by-value Pass-by-reference Or combination Can also be returned by function Return-type is structure type Return statement in function definition sends structure variable back to caller

  16. #include <iostream> using namespace std; struct Person { char name[50]; int age; float salary; }; void displayData(Person); // Function declaration int main() { Person p; cout << "Enter Full name: "; cin.get(p.name, 50); cout << "Enter age: "; cin >> p.age; cout << "Enter salary: "; cin >> p.salary; // Function call with structure variable as an argument displayData(p); return 0; } void displayData(Person p) { cout << "\n Displaying Information." << endl; cout << "Name: " << p.name << endl; cout <<"Age: " << p.age << endl; cout << "Salary: " << p.salary; }

  17. Initializing Structures Can initialize at declaration Example: struct Date { int month; int day; int year; }; Date dueDate = {12, 31, 2003}; Declaration provides initial data to all three member variables

  18. #include <iostream> #include <string> #include <sstream> using namespace std; struct movies { string title; int year; } mine, yours; //define global variables void printmovie (movies_t movie); int main () { string mystr; mine.title = Lord of the Rings: Return of the King"; mine.year = 2001; cout << "Enter title: "; getline (cin, yours.title); cout << "Enter year: "; getline (cin, mystr); stringstream(mystr) >> yours.year; cout << "My favorite movie is:\n "; printmovie (mine); cout << "And yours is:\n "; printmovie (yours); return 0; } void printmovie (movies_t movie) { cout << movie.title; cout << " (" << movie.year << ")\n"; }

  19. pointer to structure #include <iostream> #include <string> #include <sstream> using namespace std; struct movies_t { string title; int year; }; int main () { string mystr; movies_t amovie; movies_t * pmovie; pmovie = &amovie; cout << "Enter title: "; getline (cin, pmovie->title); cout << "Enter year: "; getline (cin, mystr); (stringstream) mystr >> pmovie->year; cout << "\nYou have entered:\n"; cout << pmovie->title; cout << " (" << pmovie->year << ")\n"; return 0; }

  20. Nesting structures struct movies { string title; int year; }; struct friends { string name; string email; movies favorite_movie; } charlie, maria; friends * pfriends = &charlie;

  21. Object-Oriented Programming

  22. Why do people care about OOP?

  23. First, let us answer the follow question: How the world functions in the macro-level? And, how does a project team get the work in a micro- level?

  24. First, let us answer the follow question: How the world functions in the macro-level? And, how do a project team get the work in a micro-level? The world is functional through the interaction between different objects in it. The project team finishes a task by the coordination between different team members, e.g., the results from member A provides the input for the part that B is responsible for.

  25. What can we learn from how things work from the real-world? In order to make things happen, we just need to ensemble the necessary components and let me coordinate via proper information exchanging (or communication). Just like making a movie

  26. How does OOP mimic the real-world scenarios?

  27. Important properties of OOP, compared to the Important properties of OOP, compared to the structural programming (what we learnt before) structural programming (what we learnt before) The programming is, as you already guess, object centric, rather than algorithm centric. The design of the program is essentially the design of different objects with different functionality that is needed. And the whole program is functional by properly building the communication and information exchanging between different objects. Important OOP properties Information hiding Data abstraction Encapsulation Inheritance Polymorphism

  28. Important properties of OOP, compared to the Important properties of OOP, compared to the structural programming (like C) structural programming (like C) The programming is, as you already guess, object centric, rather than algorithm centric. The design of the program is essentially the design of different objects with different functionality that is needed. And the whole program is functional by properly building the communication and information exchanging between different objects. Important OOP properties Information hiding Data abstraction Encapsulation Inheritance Polymorphism

  29. Classes Classes

  30. Classes Classes Similar to structures Adds member FUNCTIONS Not just member data Integral to object-oriented programming Focus on objects Object: Contains data and operations In C++, variables of class type are objects

  31. Class Definitions Class Definitions Defined similar to structures Example: class DayOfYear name of new class type { public: void output(); member function! int month; int day; }; Notice only member function s prototype (or signature) Function s implementation is elsewhere

  32. Declare Objects Declare Objects Declared same as all variables Predefined types, structure types Example: DayOfYear today, birthday; Declares two objects of class type DayOfYear Objects include: Data Members month, day Operations (member functions) output()

  33. Class Member Access Class Member Access Members accessed same as structures Example: today.month today.day And to access member function: today.output(); Invokes member function

  34. Class Member Functions Class Member Functions Must define or "implement" class member functions Like other function definitions Can be after main() definition Must specify class: void DayOfYear::output() { } void Student::output() {} :: is scope resolution operator Instructs compiler "what class" member is from Item before :: called type qualifier

  35. Class Member Functions Definition Class Member Functions Definition Notice output() member function s definition (in next example) Refers to member data of class No qualifiers Function used for all objects of the class Will refer to "that object s" data when invoked Example: today.output(); Displays "today" object s data

  36. Complete Class Example: Display 6.3 Display 6.3 Class With a Member Function

  37. Encapsulation Encapsulation Any data type includes Data (range of data) Operations (that can be performed on data) Example: int data type has: Data: +-32,767 Operations: +,-,*,/,%,logical,etc. Same with classes But WE specify data, and the operations to be allowed on our data!

  38. More Encapsulation More Encapsulation Encapsulation Means "bringing together as one" Declare a class get an object Object is "encapsulation" of Data values Operations on the data (member functions)

  39. Abstract Data Types Abstract Data Types "Abstract" Programmers don t know details Abbreviated "ADT" Collection of data values together with set of basic operations defined for the values ADT s often "language-independent" We implement ADT s in C++ with classes C++ class "defines" the ADT Other languages implement ADT s as well

  40. Principles of OOP Principles of OOP Information Hiding Details of how operations work not known to "user" of class Data Abstraction Details of how data is manipulated within ADT/class not known to user Encapsulation Bring together data and operations, but keep "details" hidden

  41. Public and Private Members Public and Private Members Data in class almost always designated private in definition! Upholds principles of OOP Hide data from user Allow manipulation only via operations Which are member functions Public items (usually member functions) are "user-accessible"

  42. Public and Private Example Public and Private Example Modify previous example: class DayOfYear { public: void input(); void output(); private: int month; int day; }; Data now private Objects have no direct access

  43. Public and Private Example 2 Public and Private Example 2 Given previous example Declare object: DayOfYear today; Object today can ONLY access public members cin >> today.month; // NOT ALLOWED! cout << today.day; // NOT ALLOWED! Must instead call public operations: today.input(); today.output();

  44. Public and Private Style Public and Private Style Can mix & match public & private More typically place public first Allows easy viewing of portions that can be USED by programmers using the class Private data is "hidden", so irrelevant to users Outside of class definition, cannot change (or even access) private data

  45. Accessor Accessor and and Mutator Mutator Functions Functions Object needs to "do something" with its data Call accessor member functions Allow object to read data Also called "get member functions" Simple retrieval of member data Mutator member functions Allow object to change data Manipulated based on application

  46. Separate Interface and Implementation Separate Interface and Implementation User of class need not see details of how class is implemented Principle of OOP encapsulation User only needs "rules" Called "interface" for the class In C++ public member functions and associated comments Implementation of class hidden Member function definitions elsewhere User need not see them

  47. Structures versus Classes Structures versus Classes Structures Typically all members public No member functions Classes Typically all data members private Interface member functions public Technically, same Perceptionally, very different mechanisms

More Related Content