Stream is an abstration for input/output. Streams convert between data and the string representation of data.
1. Output streams
output stream
std::cout
is an output stream. It has typestd::ostream
, which can only send data using<<
operator to convert any type into string and sends it to the stream.
So std::cout
is the output stream that goes to the console, and it’s a global constant object that you can get from #include<iostream>
. To use any other output stream, you must first initialize it.
output file stream
std::ofstream
only uses the<<
operator to convert data of any type into a string and sends it to the file stream.
Before sending data, you must initialize your own ofstream object linked to your file.
1 | std::ofstram out("out.txt"); |
2. Input streams
Input stream
std::cin
is an input stream. It has typestd::istream
, which can only use the>>
operator to receive strings from the stream and converts it to data.
First call to std::cin>>
creates a command line prompt(提示) that allows the user to type until they hit enter
.
Each >>
only reads until the next whitespace
(include tab, space, neline…). Everything after the first whitespace gets saved into a buffer and used the next time std::cin>>
is called. If there iis nothing waiting in the buffer, std::cin>>
creates a new command line prompt. So, don’t show up a whitespace in output.
Once an error(such you input an string, while cin can only get an int), the input stream’s fail bit is set, and it will no longer accept any input.
std::cin
is dangerous to use on its own, it uses >>
to extract a single word or type including for strings. If you want to read a whole line, just use std::getline(istream& stream, string& line)
, it takes in both parameters by reference and reads up to the next delimiter(by default, ‘\n’) and does go past that delimiter.
std::cin
is a global constant object that you get from #include<iostream>
. To use any other input stream, you must first initialize it!
1 | std::string line; |
Input file stream
Input file stream have type
std::ifstream
. It only receives strings using the>>
operator which receives strings from a file and converts it to data of any type.
You must initialize your own ofstream object linked to your file.
1 | std::ifstream in("out.txt");// in is now an iftream that reads from out.txt |
3. String streams
1 |
Input stream
Input stream
std::istringstream
. Give any data type to the istringstream, it’ll store it as a string.
1 | // get from instream |
Output stream
std::ostringstream
. Make an ostringstream out of a string, read from it word/type by word/type.
1 | std::ostringstream formatter; |
- 本文作者: 夏花
- 本文链接: http://xiahua19.github.io/2022/07/23/cs106l-3-Streams/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!