-----------------------------------A Tour of C++ Chapter8-------------------------------------------
--------------------------Chapter8 I/O流------------------------
1、I/O流提供了文本和数值的输入输出功能,这种输入输出是带缓冲的,可以是格式化的,也可以是未格式化的。
2、ostream对象将有类型的对象转换为一个字符(字节)流;istream对象将一个字符(字节)转换为有类型的对象。
3、可以用getline()来读取一整行(包括结束的换行符)。
例:
void hello_line() { cout << "Please input your name\n"; string str; getline(cin, str); cout << "Hello, " << str << "!\n";
}
4、用户自定类型的I/O
例:先自定义一个简单类型
struct Entry { string name; int number; }
运算符重载:
ostream& operator<<(ostream& os, const Entry& e) { return os << "{\"" << e.name << "\"," << e.number << "}"; }
一个用户自定义的输出运算符接受它的输出流(的引用)作为第一个参数,输出完毕后,返回此流的引用。
5、文件流:在fstream中,标准库提供了从文件读取数据以及向文件写入数据的流
- ifstream用于从文件读取数据。
- ofstream用于向文件写入数据。
- fstream用于读写文件
6、字符串流:在<sstream>中,标准库提供了从string读取数据以及向string写入数据的流:
- istringstream用于从string读取数据。
- ostringstream用于向string写入数据。
- stringstream用于读写string。
例:
void test() { ostringstream oss; oss << "{temprature," << scientific << 123.456789 << "}"; cout << oss.str() << endl;
istringstream中的内容可以通过调用str()成员函数来获取。