扩展阅读
文件操作
文件的概念
大家平时都用过笔记本,我们可以在笔记本上记录很多东西,比如日记、作业答案等。而且这些记录的内容不会因为我们合上笔记本就消失,下次打开还能看到。在电脑里,文件就像是笔记本,它可以存储各种各样的信息,像文字、图片、视频等。我们可以把数据写到文件里保存起来,也可以从文件里读取已经保存的数据。
用 freopen 实现文件读写
freopen 是 C++ 里一个很有用的工具,它能让我们的程序和文件“对话”,也就是把程序里的数据写到文件里,或者从文件里读取数据到程序中。
freopen 函数的基本语法
freopen("文件名", "打开方式", 文件流);- “文件名”就是你要操作的文件的名字,比如“test.txt”。
- “打开方式”有好几种:
"r"表示以只读的方式打开文件,也就是只能从文件里读取数据。"w"表示以写入的方式打开文件,如果文件不存在就创建一个新的,如果文件已经存在就把里面原来的内容清空。"a"表示以追加的方式打开文件,如果文件不存在就创建一个新的,如果文件已经存在就把新的数据添加到文件的末尾。
- “文件流”通常用
stdin表示标准输入(也就是从键盘输入),stdout表示标准输出(也就是输出到屏幕)。
例题及示例代码
例题 1:把数据写入文件
#include <iostream>
#include <cstdio> // 使用 freopen 函数需要包含这个头文件
int main() {
// 使用 freopen 函数以写入的方式打开文件 test.txt
// 把标准输出重定向到文件 test.txt
freopen("test.txt", "w", stdout);
// 向文件里写入一句话
std::cout << "这是写入文件的内容。" << std::endl;
// 关闭文件,虽然 freopen 不需要手动关闭,但这样做是个好习惯
fclose(stdout);
return 0;
}这段代码里,freopen("test.txt", "w", stdout); 把原本要输出到屏幕的内容,重定向到了 test.txt 文件里。所以 std::cout << "这是写入文件的内容。" << std::endl; 这句话的内容就会被写到 test.txt 文件中。
例题 2:从文件里读取数据
#include <iostream>
#include <cstdio> // 使用 freopen 函数需要包含这个头文件
int main() {
// 使用 freopen 函数以只读的方式打开文件 test.txt
// 把标准输入重定向到文件 test.txt
freopen("test.txt", "r", stdin);
// 定义一个字符串变量,用来存储从文件里读取的内容
char str[100];
// 从文件里读取一行内容到字符串 str 中
std::cin.getline(str, 100);
// 把读取到的内容输出到屏幕上
std::cout << "从文件里读取的内容是:" << str << std::endl;
// 关闭文件,虽然 freopen 不需要手动关闭,但这样做是个好习惯
fclose(stdin);
return 0;
}在这个例子中,freopen("test.txt", "r", stdin); 把原本从键盘输入的数据,改成从 test.txt 文件里读取。所以 std::cin.getline(str, 100); 会从 test.txt 文件里读取一行内容到 str 字符串中,然后再把读取到的内容输出到屏幕上。
例题 3:先写入数据,再读取数据
#include <iostream>
#include <cstdio> // 使用 freopen 函数需要包含这个头文件
int main() {
// 第一步:写入数据到文件
// 使用 freopen 函数以写入的方式打开文件 data.txt
// 把标准输出重定向到文件 data.txt
freopen("data.txt", "w", stdout);
// 向文件里写入两个整数
std::cout << 10 << " " << 20 << std::endl;
// 关闭文件,虽然 freopen 不需要手动关闭,但这样做是个好习惯
fclose(stdout);
// 第二步:从文件里读取数据
// 使用 freopen 函数以只读的方式打开文件 data.txt
// 把标准输入重定向到文件 data.txt
freopen("data.txt", "r", stdin);
// 定义两个整数变量,用来存储从文件里读取的整数
int a, b;
// 从文件里读取两个整数到变量 a 和 b 中
std::cin >> a >> b;
// 把读取到的两个整数相加
int sum = a + b;
// 输出相加的结果到屏幕上
std::cout << "从文件里读取的两个数相加的结果是:" << sum << std::endl;
// 关闭文件,虽然 freopen 不需要手动关闭,但这样做是个好习惯
fclose(stdin);
return 0;
}这个例子结合了写入和读取操作。先把两个整数 10 和 20 写入到 data.txt 文件中,然后再从这个文件里读取这两个整数,把它们相加后输出结果到屏幕上。
通过上面的讲解和例题,你应该对文件的概念和 freopen 函数的使用有了基本的了解。使用 freopen 函数可以很方便地实现文件的读写操作,这样我们就能把程序里的数据保存下来,或者使用已经保存好的数据。