cpp的处理流

来源:互联网 发布:星星知我心1983百度云 编辑:程序博客网 时间:2024/06/06 02:27

cpp的处理流

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

流 数据的封装

数据缓冲

流和缓冲区

streambuf 类管理缓冲区,提供填充,清空,刷新,处理缓冲区的功能ios 输出和输入的基础类,它有一个成员变量为streambufistream和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;    }}
0 0
原创粉丝点击