//文件打开方式选项:
// 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;
}
网友评论