美文网首页
C++文件文件及二进制文件读写

C++文件文件及二进制文件读写

作者: ebayboy | 来源:发表于2019-09-30 09:26 被阅读0次

        //文件打开方式选项:

        // ios::in    = 0x01, //供读,文件不存在则创建(ifstream默认的打开方式)

        // ios::out    = 0x02, //供写,文件不存在则创建,若文件已存在则清空原内容(ofstream默认的打开方式)

        // ios::ate    = 0x04, //文件打开时,指针在文件最后。可改变指针的位置,常和in、out联合使用

        // ios::app    = 0x08, //供写,文件不存在则创建,若文件已存在则在原文件内容后写入新的内容,指针位置总在最后

        // ios::trunc   = 0x10, //在读写前先将文件长度截断为0(默认)

        // ios::nocreate = 0x20, //文件不存在时产生错误,常和in或app联合使用

        // ios::noreplace = 0x40, //文件存在时产生错误,常和out联合使用

        // ios::binary  = 0x80  //二进制格式文件

    /* file read && write */

    #include <fstream>

    #include <iostream>

    #include <cstring>

    #include <sstream>

    using namespace std;

    /* write to file */

    int txt_write(const char* fname, string data)

    {

    /* ios:app 文件不存在则创建, 在末尾写入 */

    fstream f(fname, ios::out | ios::app);

    if (f.bad()) {

    return -1;

    }

    f << data;

    f.close();

    return 0;

    }

    /* read file all */

    int txt_read(const char *fname, string &data)

    {

    std::stringstream buffer; 

    fstream f(fname, ios::in);

    if (f.bad()) {

    return -1;

    }

    buffer << f.rdbuf();

    data = buffer.str();

    f.close();

    return 0;

    }

    int write_bin(const char *fname, char *data, int dlen)

    {

    fstream f(fname, ios::out | ios::binary | ios::app);

    if (f.bad()) {

    return -1;

    }

    f.write(data, dlen);

    f.close();

    return 0;

    }

    int read_bin(const char *fname, char *data, int dlen)

    {

    fstream f(fname, ios::in | ios::binary);

    if (f.bad()) {

    return -1;

    }

    f.read(data, dlen);

    f.close();

    return 0;

    }

    int main()

    {

    /* write file */

    string wdata = "hello world11!\n";

    txt_write("txt_write.txt", wdata);

    /* read file */

    string rdata;

    txt_read("txt_write.txt", rdata);

    cout << "rdata:" << rdata << endl;

    /* write bin file */

    string wbdata = "hello world11!\n";

    txt_write("bin_write.bin", wbdata);

    /* read file */

    string rbdata;

    txt_read("bin_write.bin", rbdata);

    cout << "rbdata:" << rbdata << endl;

    return 0;

    }

    相关文章

      网友评论

          本文标题:C++文件文件及二进制文件读写

          本文链接:https://www.haomeiwen.com/subject/ddedyctx.html