写一个c++简易日记薄,要求可以写日记,通过日期查找日记,并解释每一行代码意思
时间: 2024-03-03 07:51:19 浏览: 149
好的,以下是一个简单的C++日记薄程序,实现了写日记和查找日记的功能:
```
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;
// 定义日记结构体
struct Diary {
string date;
string content;
};
// 将日记写入文件
void writeDiaryToFile(Diary diary) {
ofstream file("diary.txt", ios::app);
file << diary.date << endl << diary.content << endl;
file.close();
}
// 从文件中读取所有日记
vector<Diary> readDiariesFromFile() {
vector<Diary> diaries;
ifstream file("diary.txt");
string line;
Diary diary;
while (getline(file, line)) {
diary.date = line;
getline(file, line);
diary.content = line;
diaries.push_back(diary);
}
file.close();
return diaries;
}
// 根据日期查找日记
void findDiaryByDate(string date) {
vector<Diary> diaries = readDiariesFromFile();
for (Diary diary : diaries) {
if (diary.date == date) {
cout << "Date: " << diary.date << endl;
cout << "Content: " << diary.content << endl;
return;
}
}
cout << "No diary found for the date " << date << endl;
}
int main() {
// 读取所有日记
vector<Diary> diaries = readDiariesFromFile();
// 打印所有日记
for (Diary diary : diaries) {
cout << "Date: " << diary.date << endl;
cout << "Content: " << diary.content << endl;
}
// 写入新的日记
Diary diary;
cout << "Enter date (yyyy-mm-dd): ";
getline(cin, diary.date);
cout << "Enter content: ";
getline(cin, diary.content);
writeDiaryToFile(diary);
// 根据日期查找日记
string date;
cout << "Enter date to search (yyyy-mm-dd): ";
getline(cin, date);
findDiaryByDate(date);
return 0;
}
```
程序中的主要函数和结构体如下:
1. 结构体 Diary:用来表示一条日记,包括日期和内容两个成员变量。
2. 函数 writeDiaryToFile:将一条日记写入文件 diary.txt 中,使用 ofstream 类型的文件流进行操作,将日期和内容分别写入两行。
3. 函数 readDiariesFromFile:从文件 diary.txt 中读取所有日记,使用 ifstream 类型的文件流进行操作,将每个日记按行读取并保存到一个 vector<Diary> 类型的数组中。
4. 函数 findDiaryByDate:根据输入的日期查找对应的日记,首先调用 readDiariesFromFile 函数读取所有日记,然后遍历数组查找对应日期的日记,如果找到了就输出日期和内容,否则输出未找到的提示信息。
5. 主函数 main:首先调用 readDiariesFromFile 函数读取所有日记并输出,然后提示用户输入新的日记内容并调用 writeDiaryToFile 函数写入文件,最后提示用户输入要查找的日期并调用 findDiaryByDate 函数查找并输出对应的日记。
阅读全文