c++premier笔记---- IO库

  • 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;  //回到正常的缓冲方式

//关联输入和输出流
cincout 是关联的, 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打开的文件已有数据的唯一方法是显示指定appin模式
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()

猜你喜欢

转载自blog.csdn.net/qq_28038207/article/details/81155521