01 streams
DESCRIPTION
abcccTRANSCRIPT
![Page 2: 01 Streams](https://reader034.vdocuments.mx/reader034/viewer/2022051017/563db78f550346aa9a8c2be9/html5/thumbnails/2.jpg)
Prelude: Code Snippets
I often present code snippets like:cout << (5 * 4) + 2 << endl;
![Page 3: 01 Streams](https://reader034.vdocuments.mx/reader034/viewer/2022051017/563db78f550346aa9a8c2be9/html5/thumbnails/3.jpg)
Prelude: Code Snippets
When you see a code snippet like that, think: #include <iostream>
using namespace std;
int main() {
cout << (5 * 4) + 2 << endl;
return 0;
}
![Page 4: 01 Streams](https://reader034.vdocuments.mx/reader034/viewer/2022051017/563db78f550346aa9a8c2be9/html5/thumbnails/4.jpg)
The Ideas Behind Streams
![Page 5: 01 Streams](https://reader034.vdocuments.mx/reader034/viewer/2022051017/563db78f550346aa9a8c2be9/html5/thumbnails/5.jpg)
The Ideas Behind Streams
"42.0"
Ceci n'est pas une double
![Page 6: 01 Streams](https://reader034.vdocuments.mx/reader034/viewer/2022051017/563db78f550346aa9a8c2be9/html5/thumbnails/6.jpg)
The Ideas Behind Streams
In C++, what is the difference between
double number = 42.0;
and
string number = “42.0”;
![Page 7: 01 Streams](https://reader034.vdocuments.mx/reader034/viewer/2022051017/563db78f550346aa9a8c2be9/html5/thumbnails/7.jpg)
The Ideas Behind Streams
This won’t work:
//print double a number
void printDouble(string s) {
cout << s * 2 << endl;
}
![Page 8: 01 Streams](https://reader034.vdocuments.mx/reader034/viewer/2022051017/563db78f550346aa9a8c2be9/html5/thumbnails/8.jpg)
The Ideas Behind Streams
Will this?
//print a number appended with 4
void append4(int n) {
cout << n + “4” << endl;
}
![Page 9: 01 Streams](https://reader034.vdocuments.mx/reader034/viewer/2022051017/563db78f550346aa9a8c2be9/html5/thumbnails/9.jpg)
The Ideas Behind Streams
Let’s take a closer look at the difference(NuclearLaunchFacility.pro)
![Page 10: 01 Streams](https://reader034.vdocuments.mx/reader034/viewer/2022051017/563db78f550346aa9a8c2be9/html5/thumbnails/10.jpg)
The Ideas Behind Streams
● Input from user is in text form (string)● Output to screen is in text form (string)● Computation, however, needs to be done in
numeric form (int, double, etc)
![Page 11: 01 Streams](https://reader034.vdocuments.mx/reader034/viewer/2022051017/563db78f550346aa9a8c2be9/html5/thumbnails/11.jpg)
"Designing and implementing a general input/output facility for a programming language is notoriously difficult" --Bjarne Stroustrup
![Page 12: 01 Streams](https://reader034.vdocuments.mx/reader034/viewer/2022051017/563db78f550346aa9a8c2be9/html5/thumbnails/12.jpg)
The Ideas Behind Streams
Streams allow a C++ programmer to convert between the string representation of data, and
the data itself.
![Page 13: 01 Streams](https://reader034.vdocuments.mx/reader034/viewer/2022051017/563db78f550346aa9a8c2be9/html5/thumbnails/13.jpg)
What is a Stream?
● a stream is an object that can send and receive data
● You have already been using streams: namely cout
● Many different kinds of streams
![Page 14: 01 Streams](https://reader034.vdocuments.mx/reader034/viewer/2022051017/563db78f550346aa9a8c2be9/html5/thumbnails/14.jpg)
Hello World in C++
#include <iostream>
using namespace std;
int main() {
cout << "Hello World!" << endl;
}
![Page 15: 01 Streams](https://reader034.vdocuments.mx/reader034/viewer/2022051017/563db78f550346aa9a8c2be9/html5/thumbnails/15.jpg)
Hello World in C++
#include <iostream>
using namespace std;
//Sends the string “Hello World!”
//to the stream cout
int main() {
cout << "Hello World!" << endl;
}
![Page 16: 01 Streams](https://reader034.vdocuments.mx/reader034/viewer/2022051017/563db78f550346aa9a8c2be9/html5/thumbnails/16.jpg)
Output Streams
● Any stream which can only receive data, like cout, is called an output stream, or ostream
● Send data using the string insertion operator: <<
● Converts data to a string and sends to a stream
![Page 17: 01 Streams](https://reader034.vdocuments.mx/reader034/viewer/2022051017/563db78f550346aa9a8c2be9/html5/thumbnails/17.jpg)
Output Streams
● You can use an ostream for more than just printing data to a console
● You can also print data to a file using an ofstream
![Page 18: 01 Streams](https://reader034.vdocuments.mx/reader034/viewer/2022051017/563db78f550346aa9a8c2be9/html5/thumbnails/18.jpg)
Output Streams
Output Stream Example(OutputStreams.pro)
![Page 19: 01 Streams](https://reader034.vdocuments.mx/reader034/viewer/2022051017/563db78f550346aa9a8c2be9/html5/thumbnails/19.jpg)
Time Out
● Office Hours:○ Monday and Friday from 3:00pm to 4:00pm○ Gates 160
![Page 20: 01 Streams](https://reader034.vdocuments.mx/reader034/viewer/2022051017/563db78f550346aa9a8c2be9/html5/thumbnails/20.jpg)
Input Streams
Is this familiar?
int x;
cin >> x;
![Page 21: 01 Streams](https://reader034.vdocuments.mx/reader034/viewer/2022051017/563db78f550346aa9a8c2be9/html5/thumbnails/21.jpg)
Input Streams
● Any stream which can only give you data, like cin, is called an input stream, or istream
● Send data using the string extraction operator: >>
● Gets data from the stream and converts it into the appropriate type
![Page 22: 01 Streams](https://reader034.vdocuments.mx/reader034/viewer/2022051017/563db78f550346aa9a8c2be9/html5/thumbnails/22.jpg)
Input Streams
● Just like with an ostream, an istream can be used or more than just console IO
● You can also read data from a file using an ifstream
![Page 23: 01 Streams](https://reader034.vdocuments.mx/reader034/viewer/2022051017/563db78f550346aa9a8c2be9/html5/thumbnails/23.jpg)
Input Streams
Input Stream Example(InputStreams.pro)
![Page 24: 01 Streams](https://reader034.vdocuments.mx/reader034/viewer/2022051017/563db78f550346aa9a8c2be9/html5/thumbnails/24.jpg)
Reading Data from a File
To understand an istream, think of it as sequence of characters
4 2 1 3 4 \n
position
![Page 25: 01 Streams](https://reader034.vdocuments.mx/reader034/viewer/2022051017/563db78f550346aa9a8c2be9/html5/thumbnails/25.jpg)
Reading Data from a File
Extracting an integer will read as many characters as possible from the stream
int value;
istream >> value //value == 42
4 2 1 3 4 \n
position
![Page 26: 01 Streams](https://reader034.vdocuments.mx/reader034/viewer/2022051017/563db78f550346aa9a8c2be9/html5/thumbnails/26.jpg)
Reading Data from a File
Extracting again will skip over any whitespace when reading the next integer
int value;
istream >> value //value == 134
4 2 1 3 4 \n
position
![Page 27: 01 Streams](https://reader034.vdocuments.mx/reader034/viewer/2022051017/563db78f550346aa9a8c2be9/html5/thumbnails/27.jpg)
Reading Data from a File
When no more data can be read, the fail bit will be set to true
int value;
istream >> value //value == ??
4 2 1 3 4 \n
position
![Page 28: 01 Streams](https://reader034.vdocuments.mx/reader034/viewer/2022051017/563db78f550346aa9a8c2be9/html5/thumbnails/28.jpg)
Input Streams
More Input Stream Examples(InputStreams.pro)
![Page 29: 01 Streams](https://reader034.vdocuments.mx/reader034/viewer/2022051017/563db78f550346aa9a8c2be9/html5/thumbnails/29.jpg)
Reading Data from a File
● There are some quirks with extracting a string from a stream
● Reading into a string using >> will only read a single word, not the whole line
● To read a whole line use getlinegetline(stream, string line);
![Page 30: 01 Streams](https://reader034.vdocuments.mx/reader034/viewer/2022051017/563db78f550346aa9a8c2be9/html5/thumbnails/30.jpg)
Reading Data from a File
● To re-read a file, you must close it, clear it, and reopen it
input.close();
input.clear();
input.open(“filename”);
![Page 31: 01 Streams](https://reader034.vdocuments.mx/reader034/viewer/2022051017/563db78f550346aa9a8c2be9/html5/thumbnails/31.jpg)
Input Streams
Most Input Stream Examples(InputStreams.pro)
![Page 32: 01 Streams](https://reader034.vdocuments.mx/reader034/viewer/2022051017/563db78f550346aa9a8c2be9/html5/thumbnails/32.jpg)
Reading Data from a File
● There are some more subtle details to file reading that we will examine on Tuesday
● As a preview: What happens when you read into the wrong type?
int x;
input >> x;
R a p t o r \n
![Page 33: 01 Streams](https://reader034.vdocuments.mx/reader034/viewer/2022051017/563db78f550346aa9a8c2be9/html5/thumbnails/33.jpg)
One Last Stream: Stringstream
● There is another type of stream worth mentioning: the stringstream
● Unlike every other stream we have looked at, stringstreams don’t send data anywhere
● Useful for converting between types
![Page 34: 01 Streams](https://reader034.vdocuments.mx/reader034/viewer/2022051017/563db78f550346aa9a8c2be9/html5/thumbnails/34.jpg)
One Last Stream: Stringstream
Stringstream Examples(StringStream.pro)