1: //readwrite.cpp
2: //To test RTTI (run-time type identification).
4: #include <iostream>
5: #include <fstream>
6: #include <string>
7: #include <typeinfo>
8: using namespace std;
11: void DisplayProgramInfo();
12: /**<
13: Display the program description.
14: @pre None.
15: @post The program description has been displayed,
16: preceded by a blank line and followed by a pause.
17: */
20: void ReadData
21: (
22: istream& inStream, //in
23: string& someString //out
24: );
25: /**<
26: Reads a single word from an input stream.
27: @return void
28: @param inStream
29: @param someString
30: @pre inStream exists and is open.
31: @post
32: - someString contains a word from inStream.
33: - inStream is still open.
34: */
37: void WriteData
38: (
39: ostream& outStream, //inout
40: const string& someString //in
41: );
42: /**<
43: Writes a single word to an output stream.
44: @return void
45: @param outStream
46: @param someString
47: @pre
48: - outStream exists and is open.
49: - someString has been initialized.
50: @post
51: - Value in someString has been written to outStream.
52: - outStream is still open.
53: */
55: int main()
56: {
57: DisplayProgramInfo();
59: string secretWord;
61: cout << endl;
62: ifstream inFile("readwrite.in");;
63: ReadData(inFile, secretWord);
64: inFile.close(); inFile.clear();
66: WriteData(cout, secretWord);
67: cout << "Press Enter to continue ... "; cin.ignore(80, '\n');
68: cout << endl;
70: ReadData(cin, secretWord);
71: ofstream outFile("readwrite.out");
72: WriteData(outFile, secretWord);
73: outFile.close(); outFile.clear();
74: cout << "Press Enter to continue ... "; cin.ignore(80, '\n');
75: }
78: void DisplayProgramInfo()
79: {
80: cout << "\nThis program reads data from a file called readwrite.in, "
81: "and then writes it\nout to the screen. Next, it reads the same "
82: "kind of data from the keyboard\nand writes it out to a file "
83: "called readwrite.out."
85: "\n\nAt the moment, in both cases, the input data is just a "
86: "single word.";
87: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');
88: }
91: void ReadData
92: (
93: istream& inStream, //in
94: string& someString //out
95: )
96: {
97: if (typeid(inStream) == typeid(cin))
98: cout << "Enter today's secret word from the keyboard: ";
99: getline(inStream, someString);
100: if (typeid(inStream) == typeid(ifstream))
101: cout << "The secret word has been read from file readwrite.in.\n";
102: }
105: void WriteData
106: (
107: ostream& outStream, //inout
108: const string& someString //in
109: )
110: {
111: if (typeid(outStream) == typeid(cout))
112: cout << "Here is the secret word: ";
113: outStream << someString << endl;
114: if (typeid(outStream) == typeid(ofstream))
115: cout << "The secret word has been written to file readwrite.out.\n";
116: }