c++—文件编程

1. c++对文件的操作是由文件流类完成的,文件流类在流类与文件间建立连接;

2. 文件流类型

        ①文件输入流:ifstream

        ②文件输出流:ofstream

        ③文件输入/输出流:fstream

3. 语法

        ①定义文件流类的对象

ifstream ifile;   //定义了一个文件输入流对象;
ofstream ofile;   //定义了一个文件输出流对象;
fstream iofile;   //定义了一个文件输出/输入流对象;

        ②文件的打开方式

ifstream → ios::in
ofstream → ios::out|ios::trunc
fstream  → ios::in|ios::out|ios::app  

        ③文件打开示例

ifstream ifs("xxx.txt", ios::in);
if(!ifs)
{
    cout<<"open error ifs"<

4. 文件中get()与getline()两个成员函数之间的区别

        ①get()遇到设置的终止符会停止,且不会从流中提取终止符,也不会越过终止符;

        ②getline()则会越过终止符(例如‘\n’),但是仍然不会把它放到缓冲区,比如在文件拷贝过程中设置了终止符是'\n',那么则需要在每次写入后在写入一个‘\n’;

5. 其他一些函数

        ①ignore():用于跳过流中的n个字符,或者遇到结束字符位置;

        ②int peek():窥视最近一次移动的指针,即向后看一下下一个字符是什么;实际并不改变文件读写位置;

        ③putback(char c):将字符c插入到当前的指针位置;

        ④close():成员函数,用来关闭文件;

 6. 随机读写函数,即随机移动文件指针,下文有示例

tellg()         //返回当前指针位置,输入流操作
seekg(绝对位置)  //输入数值,进行绝对移动
seekg(相对位置,参照位置)  //相对于参照位置进行移动
seekp(绝对位置)  //输入数值,进行绝对移动
seekp(相对位置,参照位置)  //相对于参照位置进行移动
tellp();        //返回当前指针位置,输出流操作

//参照位置的三种方式:
ios::beg  //相对于文件头
ios::cur  //相对于当前位置
ios::end  //相对于文件尾
#include 
#include 
#include 

using namespace std;

int main(int argc, char **argv)
{
    fstream fs(argv[1], ios::in | ios::out | ios::trunc);
    assert(fs);
    char buf[100];
    fs<<"aabbccdd";
    fs.seekg(0,ios::beg);  //将文件指针定位在开头

    fs>>buf;

    cout<<"buf : "<

7. 文件拷贝程序,两个版本,分别是file.get()、file.getline();

file.get():

#include 
#include 
#include 
#include 

using namespace std;

int main(int argc, char ** argv)
{
    fstream from_file(argv[1],ios::in);
    if(!from_file)
    {
        cout<<"open from_file failed"<

file.getline():

#include 
#include 
#include 
#include 
#include 

using namespace std;

int main(int argc, char **argv)
{
    ifstream in_file(argv[1],ios::in);
    assert(in_file);

    ofstream out_file(argv[2],ios::out|ios::trunc);
    assert(out_file);

    char buf[1024];

    while(!(in_file.eof()))  //file.eof代表文件尾
    {
        memset(buf,0,sizeof(buf));
        in_file.getline(buf,sizeof(buf),'\n');  //getline会跳过终止符
        out_file.write(buf,strlen(buf));
        out_file<<'\n';  //每次补充一个\n进去;

    }

    in_file.close();
    out_file.close();

    return 0;
}

你可能感兴趣的:(c++,开发语言,c语言)