C++ fstream和文件打开模式

我们之前使用的ifstream可以创建一个输入程序的对象,ofstream可以创建一个输出程序的对象。而fstream可以创建既能输入又能输出的文件对象。也就是说,如果我们有一个对象既要进行输入,又要进行输出,那么fstream对象是很方便的。

fstream对象在创建时必须指定文件模式。详细的文件模式如下:

模式 描述
ios::in 输入
ios::out 输出(覆盖源文件)
ios::app 所有数据追加在末尾(在源文件末尾追加内容)
ios::ate 打开一个输出文件并移动到文件末尾。数据可以写入文件的任何位置
ios::trunc 如果文件已存在,则丢弃文件内容(ios::out的缺省方式)
ios::binary 以二进制格式输入输出(用于图片,视频,可执行文件等)

使用符号“|”可以组合多个模式,比如:

stream.open("city.txt", ios::out | ios::app);
//创建文件city.txt的fstream对象
//模式为追加输出

下面举个例子:

#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    fstream stream;
    stream.open("city.txt", ios::out);

    stream << "Beijing" << endl << "Shanghai" << endl << "Guangdong" << endl << "Shenzhen" << endl;

    stream.close();

    stream.open("city.txt", ios::out | ios::app);

    int loop;
    cout << "城市的个数:" << endl;
    cin >> loop;

    string city;
    cout << "请输入城市名(以换行区分):" << endl;
    cin.get();
    getline(cin, city, '\n');
    stream << city << endl;
    for (int i = 0; i < loop-1; i++){
        getline(cin, city, '\n');
        stream << city << endl;
    }

    stream.close();

    stream.open("city.txt", ios::in);
    cout << "\n文件内所有的城市为:" << endl;

    while(!stream.eof()){
        stream >> city;
        cout << city << " ";
    }
    cout << endl;

    stream.close();
    return 0;
}

运行示例:

 

 

 

posted @ 2020-05-19 09:41  川尘  阅读(2130)  评论(0编辑  收藏  举报
`