c++io库

    c++通过一族定义在标准库中的类型来处理IO。这些类型支持从设备读取数据,向设备写入数据的io操作。

1)IO类

    io类根据处理对象的不同分别定义在下面三个库中

头文件 
iostreamistream, wisream 从流中读取数据
 ostream, wostream 向流写入数据
 iostream, wiostream 读写流
fstreamifstream, wifstream 从文件读取数据
 ofstream, wofstream 向文件写入数据
 fstream, wfstream  读写文件
sstreamistringstream, wistringstream 从string读取数据
 ostringstream, wostringstream 向string写入数据
 stringstream, wstringstream 读写string

----标准库使我们可以忽略不同流对象之间的差异。不管具体是哪种类型, 我们都可以利用 >> 读取数据, 用<< 写入数据。

        一个比较经典的例子就是在读取一行多个数字而不知道数字的个数的时候是, 可以通过stringstream来实现

char ch; string s;
getline(cin, s); //这里不能用>>, 因为>>读到空格结束
stringstream ss(s); //将字符串流与字符串绑定, 之后就可以像使用标准输入流一样使用了
int a; vector<int>v;
while (ss >> a) v.push_back(a);

----io对象不能进行拷贝或赋值。

ostream out1, out2;
out1 = out2; // 错误 不能对流对象赋值
ostream out3(out1)//错误 不能拷贝流对象

由于不能拷贝IO对象, 因此我梦不能将函数形参或返回值设置为流类型。进行IO操作的函数通常以引用方式传递和返回流。

----fstream继承自iostream, 但多了open和close两个方法。fstream在使用前要打开一个文件与之绑定。打开时要确定文件打开的模式。

in

打开文件做读操作

out

打开文件做写操作

app

每次在写之前找到文件尾

ate

打开文件后立即将文件定位到文件尾

trunk

打开文件时清空已存在的文件流

binary

已二进制的模式进行IO操作

下面以对名为“a.txt"的文件操作为例。

   // cout << judge(line(1, 1, 2, 1), line(0, 1, 0, 2)) << endl;
    //以out模式打开文件, 写入数据
    fstream out; //初始化一个fstream流
    out.open("a.txt", ios::out);  //用open方法打开文件并将流与文件绑定
    string s;
    while(getline(cin ,s))
    {
        out << s;
    }
    /*注意这里提到的模式是文件的模式, 一个文件不能同时打开两次,
    需要将之前与它绑定的流恢复到初始状态。而close只是关闭流而不会改变流内部的状态, 
    所以需要用clear将流复位之后再用close关闭*/
    out.clear(); 
    out.close();
    //以in模式打开文件读取数据
    fstream in("a.txt", ios::in) //也可以在初始化的同时绑定
    while(getline(in, s))
    {
        cout << s <<endl; //依次输出文件的每一行
    }
    


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值