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

    //文件打开方式选项:

    // 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

#include

#include

#include

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++文件文件及二进制文件读写)