cpp的处理流

cpp的处理流

一堆规则,没有什么特别说明的。不过流都是有缓冲区的,这点要记住了。如果不刷新缓冲区或者关闭文件,数据内容可能不会进入文件。

流 数据的封装

数据缓冲

流和缓冲区

streambuf 类管理缓冲区,提供填充,清空,刷新,处理缓冲区的功能
ios 输出和输入的基础类,它有一个成员变量为streambuf
istream和ostream 从ios派生专门管理输入输出行为
iostream从istream 和ostream派生,处理屏幕输出
fstream  处理文件的输入和输出

标准io对象

 cin
 cout 
 cerr
 clog

流的简单操作,比较琐碎,简单的明白即可,需要的时候取查阅手册

cout << xxx;
cin >> xxx;

简单的文件读写

ios:app 附加到文件的末尾
ios:ate 调到文件的末尾但是可以在文件的任何地方写入数据
ios:trunc 删除已有的文件的内容
ios:nocreate 如果文件不存在,打开操作失败
ios:noreplace 如果文件以及存在 打开操作失败
ios::binary

二进制文件读写

 见代码
//
//  main.cpp
//  use_stream
//
//  Created by bikang on 16/11/1.
//  Copyright (c) 2016年 bikang. All rights reserved.
//

#include <iostream>
#include <fstream>

using namespace std;

void tstream(int argc, const char * argv[]);
void tcin();

int main(int argc, const char * argv[]) {
    //tcin();
    tstream(argc,argv);
    return 0;
}

void tcin(){
    int mInt;
    cin >> mInt;
    cout << mInt;

}

void tstream(int argc, const char * argv[]){

    //简单的文件多谢
    cout << "tstream"<< endl;
    string filename = "test123.log";
    ofstream fout(filename);

    if(fout){
        fout << "line go go"<< endl;
        fout << "567"<< endl;
        fout << "234"<< endl;
        fout.close();
    }
    char buf[4096];
    ifstream fin(filename);
    if(fin){
        while(!fin.eof()){
            fin.getline(buf, 4096);
            cout << buf << endl;
        }
    }

    fstream fp(filename,ios::app);
    if(fp){
        fp <<  "dd";
        fp.close();
    }


    //二进制数据

    ofstream fout2(filename,ios::binary|ios::app);
    if(fout2){
        fout2.write("hello", 6);
        fout2.close();
    }

    ifstream fin2(filename,ios::binary);
    if(fin2){
        while (!fin2.eof()) {
            fin2.read(buf,4096);
            cout << buf;
        }
        fin2.close();
    }

    //命令行
    cout << endl;
    for(int i=0;i<argc;++i){
        cout << argv[i]<<endl;
    }

}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值