1. 面向对象的标准库
iostream 定义读写控制窗口的类型
fstream 读写文件
sstream 用于读写存储在内存中的 string 对象
2. 条件状态
流必须处于无错误状态,才能用于输入或输出。检测流是否用的最简单的方法是检查其真值:
int ival;
cin >> ival;
if (cin)
// ok to use cin, it is in a valid state
while (cin >> word)
// ok: read operation successful ...
3. 文件流
fstream,由 iostream 派生而来,提供读写同一个文件的功能。
文件流对象的使用
ifstream infile; // 读文件
ofstream outfile; // 写文件
检查文件打开是否成功
string ifile("a.txt");
string ofile("b.txt");
ifstream infile(ifile);
ofstream outfile(ofile);
if (!infile) {
cerr << "error: unable to open input file: "
<< ifile << endl;
}
文件打开模式
in 打开文件做读操作
out 打开文件做写操作
app 在每次写之前找到文件尾
ate 打开文件后立即将文件定位在文件尾
trunc 打开文件时清空已存在的文件流
binary 以二进制模式进行 IO 操作
ofstream outfile2("Q:\\spider\\test.txt", ofstream::out | ofstream::ate | ofstream::app); //往文件尾写
if (outfile2) {
outfile2<<"Hell world";
outfile2.flush();
outfile2.close();
}
4. 字符串流
stringstream,由 iostream 派生而来,提供读写 string 的功能,需要包含头文件sstream 。
stringstream strm; 创建自由的 stringstream 对象
stringstream strm(s); 创建存储 s 的副本的 stringstream 对象,其中 s 是 string 类型的对象
strm.str() 返回 strm 中存储的 string 类型对象
strm.str(s) 将 string 类型的 s 复制给 strm,返回 void
stringstream使用:
string s;
stringstream ss(s);
ss<<"Hello world ";
ss<<123;
string s2(ss.str());
cout<<s2<<endl;