C++读写文件

#include <fstream>

ofstream //文件写操作,内存写入到存储设备

ifstream //文件读操作,存储设备读取到内存中

fstream //读写操作,对打开的文件进行读写操作

 

1、打开文件

//参数1:操作的文件名

//参数2:打开文件的方式

//参数3:打开文件的属性

 

//打开文件有如下几种方式:

ios::in 为输入(读)而打开文件

ios::out 为输出(写)而打开文件

ios::ate 初始位置:文件尾

ios::app 所有输出附加在文件末尾

ios::trunc 如果文件已存在则先删除文件

ios::binary 二进制方式

 

这些方式都可以组合使用,之间使用(“|”)进行组合,

如:ofstream out;

out.open("aaa.txt", ios::out|ios::binary);

 

//打开文件的属性

0 普通文件,打开操作

1 只读文件

2 隐含文件

 

void open(const wchar_t *_Filename,   ios_base::openmode mode= ios_base::in | ios_base::out,   int prot = ios_base::_Openprot); 

 

例:

#include <iostream>
#include <fstream>
using namespace std;

int main()
{
    ofstream file;
    file.open("aaa.txt", ios::out|ios::binary);
    file.close();
}

其中可使用缺省的方式:

ofstream out("aaa.txt", ios::out); //ios::out可缺省

ifstream in("aaa.txt", ios::in); //ios::in可缺省

fsteam fp("aaa.txt", ios::in| ios::out); //ios::in|ios::out可缺省

 

使用缺省方式时,可以用函数is_open(),判断文件是否打开

ofstream file("bbb.txt");
if(file.is_open())         //打开成功返回1,否则返回0
{
    cout<<"hello!"<<endl;
    file.close();
}

2、关闭文件

close();

 

3、文件写入

(1)使用操作符“<<”写入文件

#include <iostream>
#include <fstream>

int main()
{
    std::ofstream file("aaa.txt", std::ios::out);
    if(file.is_open())
    {
        file<<"hello world\n";
        file.close();
    }
    return 0;
}

此种方式主要是文本文件的写入。

 

(2)write()写入文件

//buffer 表示要写入的内容,size表示写入内容的大小

write ( char * buffer, streamsize size ); //用于写入文本文件及二进制文件

例:

#include <iostream>
#include <string>
#include <fstream>

int main()
{
    std::string buffer = "hello world!";
    std::ofstream file("aaa.txt", std::ios::binary|std::ios::out);
    if(file.is_open())
    {
        file.write(buffer.c_str(), buffer.size());
        file.close();
    }
    return 0;
}

 

4、文件读取

(1)ifstream类的getline()函数

参数1:存放读取的字符串

参数2:读取的字符串长度

参数3:读取的结束符,默认为换行符

//length长度不足时,返回false,读取正常结束,返回true

istream& getline (char* s, streamsize n );

istream& getline (char* s, streamsize n, char delim );

 

例:

#include <iostream>
#include <string>
#include <fstream>

using namespace std;
int main()
{
    char str[1024] = {0};
    ifstream file("aaa.txt", ios::in);
    if(file.is_open())
    {
        while(file.getline(str, 1024))
        {
            cout<<str<<endl;
        }
        file.close();
    }
    return 0;
}

(2)string类的getline函数

参数1:ifstream类,文件描述符

参数2:string类,存放读取的数据

参数3:读取截至符,默认为换行'\n'

istream& getline (istream& is, string& str, char delim); istream& getline (istream& is, string& str);

例:

#include <iostream>
#include <string>
#include <fstream>

using namespace std;
int main()
{
    string str;
    ifstream file("aaa.txt", ios::in);
    if(file.is_open())
    {
        while(getline(file, str))
        {
            cout<<str<<endl;
        }
        file.close();
    }
    return 0;
}

(3)read()读取文本文件与二进制文件

参数1:存放读取的内容

参数2:读取内容的大小

istream & read ( char * buffer, int size );

例:

#include <iostream>
#include <string>
#include <fstream>
#include <string.h>

using namespace std;
int main()
{
    //string buffer;
    char buffer[10240] = {0};
    ifstream file("aaa", ios::in);
    if(file.is_open())
    {
        file.read(buffer, 10240);
        file.close();
    }
    if(strlen(buffer) > 0)
    {
        ofstream out("bbb", ios::out);
        if(out.is_open())
        {
            out.write(buffer, 10240);
            out.close();
        }
    }
    return 0;
}

 

参考:https://www.cnblogs.com/hdk1993/p/5853233.html

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值