第一部分:考点与作答区
考点:
- 文件流的基本概念
- 文件的打开与关闭
- 文件的读写操作
作答区: 编写一个C++程序,完成以下要求:
- 使用
fstream
类打开一个名为data.txt
的文件。 - 向文件中写入一行文本。
- 关闭文件。
- 再次打开文件,并读取文件中的内容。
- 关闭文件。
请在下方空白处编写代码:
// 在此处编写代码
第二部分:解题思路与答案
解题思路:
- 首先,使用
fstream
类创建一个文件流对象,并打开一个名为data.txt
的文件。 - 然后,使用
ofstream
对象(文件输出流)向文件中写入一行文本。 - 写入完成后,关闭文件。
- 再次打开文件,这次使用
ifstream
对象(文件输入流)来读取文件中的内容。 - 读取完成后,关闭文件。
答案:
#include <iostream>
#include <fstream>
#include <string>
int main() {
// 创建文件流对象并打开文件
std::ofstream outFile("data.txt");
if (!outFile) {
std::cerr << "Error opening file." << std::endl;
return 1;
}
// 写入文本
outFile << "This is a test." << std::endl;
// 关闭文件
outFile.close();
// 再次打开文件
std::ifstream inFile("data.txt");
if (!inFile) {
std::cerr << "Error opening file." << std::endl;
return 1;
}
// 读取文件内容
std::string line;
std::getline(inFile, line);
std::cout << "Read from file: " << line << std::endl;
// 关闭文件
inFile.close();
return 0;
}
在这段代码中,我们首先使用 fstream
类创建了一个名为 data.txt
的文件流对象。接着,我们使用 ofstream
对象向文件中写入了一行文本。写入完成后,我们关闭了文件。然后,我们再次打开文件,这次使用 ifstream
对象来读取文件中的内容。读取完成后,我们关闭了文件。
第三部分:扩展考点与扩展作答区
扩展考点:
- 文件流操作中的错误处理
- 文件的随机访问
扩展作答区: 在原有程序的基础上,增加以下功能:
- 在写入文件之前,检查文件是否已经存在,如果存在,则询问用户是否要覆盖。
- 使用
fstream
类的随机访问功能,定位到文件的中间位置,并写入新文本。
请在下方空白处编写代码:
// 在此处编写代码
第四部分:扩展解答思路与答案
扩展解答思路:
- 在写入文件之前,使用
fstream
类的is_open()
函数检查文件是否已经打开。如果文件已经存在,使用ofstream
对象的exist()
函数检查文件是否已经存在。如果文件存在,询问用户是否要覆盖。 - 使用
fstream
类的随机访问功能,使用fstream
对象的tellp()
函数获取文件指针的位置,然后使用seekp()
函数将文件指针定位到文件的中间位置。 - 在中间位置写入新文本。
答案:
#include <iostream>
#include <fstream>
#include <string>
int main() {
// 创建文件流对象并打开文件
std::ofstream outFile("data.txt");
if (!outFile) {
std::cerr << "Error opening file." << std::endl;
return 1;
}
// 检查文件是否已经存在,如果存在,询问用户是否要覆盖
if (outFile.exist() && !outFile.is_open()) {
std::string choice;
std::cout << "The file already exists. Do you want to overwrite it? (yes/no): ";
std::cin >> choice;
if (choice != "yes") {
std::cout << "Exiting." << std::endl;
return 1;
}
}
// 写入文本
outFile << "This is a test." << std::endl;
// 关闭文件
outFile.close();
// 再次打开文件
std::ifstream inFile("data.txt");
if (!inFile) {
std::cerr << "Error opening file." << std::endl;
return 1;
}
// 读取文件内容
std::string line;
std::getline(inFile, line);
std::cout << "Read from file: " << line << std::endl;
// 关闭文件
inFile.close();
return 0;
www.xyxxrc.com
www.zmdxp.com
www.hhlcrc.com
www.cxdyrc.com
www.ncnbrc.com
}
在这段代码中,我们首先使用 fstream
类创建了一个名为 data.txt
的文件流对象。然后,我们检查文件是否已经存在,如果存在,我们询问用户是否要覆盖。如果用户选择不覆盖,程序将退出。如果文件不存在或用户选择覆盖,我们将文本写入文件。写入完成后,我们关闭了文件。然后,我们再次打开文件,使用 fstream
类的随机访问功能,将文件指针定位到文件的中间位置,并在中间位置写入新文本。