[关闭]
@Sakura-W 2016-04-30T15:28:15.000000Z 字数 2413 阅读 2623

C++文件输出流

C语言


一、基础知识

1.头文件

#include <fstream>

2.文件输出流类

ifstream  --从已有文件读取
ofstream  --向文件写内容
fstream   --打开文件供读写

3.支持的文件类型

1)文本文件:保存的是可读的字符。使用文本模式只能读写文本文件
2)二进制文件:保存的是二进制数据。使用二进制模式,可以操作图像等文件

二、写文件

1.步骤

1)声明一个ofstream变量,并与一个文件相关联
2)写文件
3)调用close方法,关闭文件流

2.例子

#include <fstream>
using namespace std;
int main(){
    ofstream file1("test.txt");//关联文件(若该文件不存在,则新建该文件)
    file1<<"写入文件"<<endl;//可以用cout一样使用操作符<<向文件写入内容
    file1.close();//若未调用close方法,file1的析构函数会默认关闭文件流
    return 0;
}

三、读文件

1.步骤

1)声明一个ifstream变量,并与一个文件关联起来
2)从文件读取数据
3)关闭文件

2.例子

   #include <fstream>
    using namespace std;
    int main(){
        ifstream file("test.txt");
        int x;
        file>>x;//向cin一样通过输入给x赋值
        cout<<x;
        return 0;
    }
    //可以像cin一样使用>>操作符操作文件或者调用成员函数
    file>>x;
    file.get(char);
    file.getline(char *, int sz);

四、读写文件

ofstream和ifstream只能进行读或者写,而fstream则同时提供读写功能

例子:

#include <fstream>
using namespace std;
int main(){
    fstream file("test.txt");
    //do input or output
    file.close();
}

五、文件输出流成员函数

1.open函数

1)作用:将ofstream对象与文件关联起来

ofstream file;
file.open("test.txt");

2)打开模式

ios_base::app  --打开一个输出文件并用于在文件尾添加数据
ios_base::ate  --打开一个现存文件并查找到结尾
ios_base::in   --打开一个输入文件,避免删除文件中现有的内容
ios_base::out  --打开一个文件,用于输出。默认模式
ios_base::trunc--打开一个文件,如果它已经存在则删除其原有内容
ios_base::binary--以二进制模式打开一个文件(默认是文本模式)

2.close函数

关闭一个与文件输出流关联的文件。虽然ofstream析构函数会自动完成关闭,但是如果需要在同一对象上打开另外的文件,就需要使用close函数。

3.put函数

把一个字符写到输入流中。

cout.put('A');//精确地输出一个字符

4.write函数
把内存中的一块内容写到文件输出流中,长度参数指出写的字节数

ostream &write(const char *buf, streamsize num);

buf是一个字符数组,它用以存放你要写入文件的数据;num是写入文件的字节数

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

int main(){
    ofstream file("test.txt",ios_base::out);
    char arr[13];
    strcpy(arr, "Hello World!");
    file.write(arr, 5);//把前五个字符写进文件
    return 0;
}

六、文件输入流函数

1.open函数

1)作用:将文件输入流对象与一个文件关联起来

2)文件输入流文件打开模式

ios_base::in    --打开文件用于输入(默认)
ios_base::binary--以二进制模式打开文件(默认为文本文件)

2.close函数

作用于文件输出流的close函数相同

3.get函数

1)作用:作用于提取运算符">>"相似,但get函数可以读入空白字符

#include <iostream>
using namespace std;

int main(){
    char ch;
    while((ch = cin.get()) != EOF){//EOF表示文件或者标准输入的结尾
        cout.put(ch);
    }
    return 0;
}

4.getline函数

1)作用

istream类的非成员函数getline允许从输入流中读取多个字符,并且允许指定输入终止字符,从读取的内容中删除该终止字符,并且将结果保存到string类型的对象中。非成员的getline函数声明在string头文件中

2)例子

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

int main(){
    string line;
    getline(cin, line, 't');
    //参数分别表示输入流、保存结果的string对象和终止字符
    cout<<line<<endl;
    return 0;
}

5.read函数
从一个文件读字节到一个指定的存储器区域,由长度参数确定要读的字节数。

istream &read(char *buf, streamsize num);

buf应当是一个字符数组,由文件读出的数据将被保存在这儿。

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

int main(){
    ifstream file("test.txt",ios_base::in);
    char arr[10];
    file.read(arr, 3);
    //读取文件中的前三个字符,并且赋值给arr字符数组,然后在控制台打印
    cout<<arr;
    return 0;
}
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注