- IO库类型和头文件
<iostream> istream, ostream, iostream, 前面加上w
<fstream> ifstream, ofstream, fstream, 前面加上w
<sstream> istringstream, ostringstream, stringstream, 前面加上w
- IO对象无拷贝和赋值
ofstream out1, out2;
out1 = out2; //error : 赋值
ofstream print(ofstream); // error :初始化
out2 = print(out2); //error : 拷贝。 以引用方式传递和返回流
while(cin >> a)
条件是!cin.fail()
流的状态:
badbit : 系统级别错误,不可恢复
failbit : 类型错误或者达到文件结束位置
eofbit : 文件结束 //上面3个任意一个置位,流状态的条件是失败
iostate : 提供所有状态,作为位集合来使用
s.eof(), s.fail(), s.bad(), s.good(), s.clear(), s.clear(flags)
s.setstate(flags) s.rdstate()
- 管理条件状态
auto old_state = cin.rdstate();
cin.clear()
process_input(cin);
cin,setstate(old_state);
cin.clear()cin.rdstate() & ~cin.failbit & ~cin.badbit);
- 管理输出缓存
//操作符刷新
endl, flush, ends
//unitbuf操纵符
cout << unitbuf; //所有输出操作后,都会立即刷新缓冲区
cout << nounitbuf; //回到正常的缓冲方式
//关联输入和输出流
cin 和 cout 是关联的, cin输入前, cout会刷新。cout输出前,cin会刷新
- 文件输入输出
fstream f;
fstream f(file);
fstream f(file, mode);
f.open(file);
f.close()
f.is_open()
放一个
fstream
对象被销毁时,close()
自动调用文件模式
in : 以读方式打开
out : 以写方式打开
app : 每次写操作之前均定位到文件末尾
ate : 打开文件后立即定位到文件末尾
trunc : 截断文件
binary : 以二进制方式进行IO
- 保留被
ostream
打开的文件已有数据的唯一方法是显示指定app
或in
模式
ofstream app_test("file1", ofstream::app)
string
流
sstream strm;
sstream strm(s);
strm.str(); //返回strm所保存的string的拷贝
strm.str(s); //将s拷贝到strm中。 返回void
- 使用
istringstream
getline(cin, line)
istringstream record(line);
OersonInfo info;
record >> info.name; //自动进行的划分子符串操作
while(record >> word)
info.phones.push_back(word);
people.push_back(info);
//ostringstream 特点是 输出: oss.str()