文件操作

如果在程序当中,我们想让程序从文件当中获得输入,或者想把计算出来的结果输出到文件当中,我们就需要对计算机的文件进行操作

文件操作的基本流程:

1.打开该文件

2.对文件进行读或写的操作

3.使用完毕关闭文件

C++重定向版本

使用freopen函数打开文件,需要包含头文件 "cstdio"

freopen的定义如下:

freopen(filename,mode,stream);
  • filename:即将操作的文件名
  • mode:打开文件的方式,读模式(r),写模式(w)
  • stream:文件指针,通常使用标准流文件。stdin(标准输入)、stdout(标准输出)

在程序当中一般都有输入和输出,可以使用cin和cout来输入输出文件

以只读(r)的方式打开test.in输入文件

以只读写(w)的方式打开test.out输出文件

freopen("test.in","r",stdin);
freopen("test.out","w",stdout);

在使用完毕后需要关闭文件

  fclose(stdin);
  fclose(stdout);

文件操作模板

#include <iostream>
#include <cstdio>

using namespace std;

int main(){
    freopen("test.in","r",stdin);
    freopen("test.out","w",stdout);

    //请添加需要操作的代码

    fclose(stdin);
    fclose(stdout);
    return 0;
}

使用实例

从文件test.in中读取一个不超过50的整数,计算从1到这个数字的累加和,并将结果放到test.out中

问题分析

1.从文件当中读取不超过50的整数

2.计算累加和

3.输出结果

示例代码

#include <iostream>
#include <cstdio>

using namespace std;

int main(){
    freopen("test.in","r",stdin);
    freopen("test.out","w",stdout);

    int n;  //保存读入的正整数
    int s;  //保存累加和的结果

    //读入正整数
    cin >> n;

    //计算累加和
    for (int i = 1 ;i <= n ;i++){
        s += i;
    }

    //输出结果
    cout << s;
    
    fclose(stdin);
    fclose(stdout);
    return 0;
}

输入文件需要自己创建

输出文件系统会自动创建

C++文件输入输出流

C++文件输入流的使用格式,需要包含头文件 fstream

ifstream cin(filename);

C++文件输出流的使用格式

ofstream cout(filename);

从test.in文件中提取数据,输出到test.out文件中

ifstream cin("test.in");
ofstream cout("test.out");

关闭文件

cin.close();
cout .close();

程序模板

#include <iostream>
#include <fstream>

using namespace std;

int main(){
    //设置输入输出文件
    ifstream cin("test.in");
    ofstream cout ("test.out");

    //添加需要处理的代码,可以使用cin和cout进行输出

    //关闭文件
    cin.close();
    cout.close();
}

使用实例

从文件in.txt中获取一行包括空格的字符串,统计字符串中空格的数量,并输出到out.txt中

问题分析

1.设置输入输出流

2.从输入流中读取内容

3.对字符进行遍历统计

4.将内容从输出流中输出

程序实例

#include <iostream>
#include <fstream>

using namespace std;

int main(){
    //设置输入输出文件
    ifstream cin("test.in");
    ofstream cout ("test.out");

    char a[100];    //用于保存输入数据
    int s = 0;      //用于计数

    //获得字符的输入
    cin >> a;

    //进行遍历统计
    for (int i = 0;a[i]!= '\0';i++){
        s += 1;
    }

    //输出结果
    cout << s;

    //关闭文件
    cin.close();
    cout.close();
}
Made with Slides.com