11,24 日记

今天学习了数组、指针,深入了内存四区,自己通过函数实现字符串的各种运算,好多、好难。下一周自习时要多巩固。

好的,下面是一个C++日记簿程序的完整代码,可以储存日记,并通过日期查找日记内容,并解释每行代码的意思: ```c++ #include <iostream> #include <fstream> #include <string> #include <ctime> using namespace std; int main() { string filename = "diary.txt"; // 定义日记文件名 string content; // 定义日记内容变量 string input_date; // 定义用户输入的日期字符串变量 time_t now = time(0); // 获取当前时间 tm* ltm = localtime(&now); // 转换为本地时间 int year = ltm->tm_year + 1900; // 年份,需要加上1900 int month = ltm->tm_mon + 1; // 月份,需要加上1 int day = ltm->tm_mday; // 日 int hour = ltm->tm_hour; // 时 int minute = ltm->tm_min; // 分 int second = ltm->tm_sec; // 秒 cout << "请输入日记内容:" << endl; // 提示用户输入日记内容 getline(cin, content); // 获取用户输入的日记内容 // 将日记内容和时间写入文件中 ofstream outfile; outfile.open(filename, ios::app); // 打开文件,以追加的方式写入 outfile << year << "-" << month << "-" << day << " " << hour << ":" << minute << ":" << second << endl; // 写入时间 outfile << content << endl; // 写入日记内容 outfile << "----------------------------------------" << endl; // 写入分隔符 outfile.close(); // 关闭文件 cout << "日记已保存成功!" << endl; // 输出保存成功的消息 cout << "请输入要查找的日期(例如:2022-02-01):" << endl; // 提示用户输入要查找的日期 cin >> input_date; // 获取用户输入的日期字符串 // 从文件中查找对应日期的日记内容 ifstream infile; infile.open(filename, ios::in); // 打开文件,以读取的方式打开 string line; // 定义每行读取的字符串变量 bool found = false; // 定义是否找到对应日期的标志变量 while (getline(infile, line)) // 逐行读取文件内容 { if (line.substr(0, 10) == input_date) // 判断当前行是否为对应日期的日记 { found = true; // 标记为找到了对应日期的日记 cout << line << endl; // 输出日期和时间 while (getline(infile, line) && line != "----------------------------------------") // 读取日记内容,直到遇到分隔符 { cout << line << endl; // 输出日记内容 } break; // 退出循环 } } infile.close(); // 关闭文件 if (!found) // 如果没有找到对应日期的日记 { cout << "没有找到对应日期的日记!" << endl; // 输出提示消息 } return 0; // 程序结束 } ``` 希望这个程序对您有所帮助。下面是每行代码的解释: 1. `#include <iostream>`:包含输入输出流的头文件。 2. `#include <fstream>`:包含文件读写流的头文件。 3. `#include <string>`:包含字符串相关操作的头文件。 4. `#include <ctime>`:包含时间相关操作的头文件。 5. `using namespace std;`:使用命名空间std。 6. `int main()`:程序入口。 7. `string filename = "diary.txt";`:定义日记文件名。 8. `string content;`:定义日记内容变量。 9. `string input_date;`:定义用户输入的日期字符串变量。 10. `time_t now = time(0);`:获取当前时间。 11. `tm* ltm = localtime(&now);`:将时间转换为本地时间。 12. `int year = ltm->tm_year + 1900;`:获取当前年份,需要加上1900。 13. `int month = ltm->tm_mon + 1;`:获取当前月份,需要加上1。 14. `int day = ltm->tm_mday;`:获取当前日。 15. `int hour = ltm->tm_hour;`:获取当前小时。 16. `int minute = ltm->tm_min;`:获取当前分钟。 17. `int second = ltm->tm_sec;`:获取当前秒数。 18. `cout << "请输入日记内容:" << endl;`:提示用户输入日记内容。 19. `getline(cin, content);`:获取用户输入的日记内容。 20. `ofstream outfile;`:定义文件写入流。 21. `outfile.open(filename, ios::app);`:以追加的方式打开文件。 22. `outfile << year << "-" << month << "-" << day << " " << hour << ":" << minute << ":" << second << endl;`:将时间写入文件中。 23. `outfile << content << endl;`:将日记内容写入文件中。 24. `outfile << "----------------------------------------" << endl;`:写入分隔符。 25. `outfile.close();`:关闭文件。 26. `cout << "日记已保存成功!" << endl;`:输出保存成功的消息。 27. `cout << "请输入要查找的日期(例如:2022-02-01):" << endl;`:提示用户输入要查找的日期。 28. `cin >> input_date;`:获取用户输入的日期字符串。 29. `ifstream infile;`:定义文件读取流。 30. `infile.open(filename, ios::in);`:以读取的方式打开文件。 31. `string line;`:定义每行读取的字符串变量。 32. `bool found = false;`:定义是否找到对应日期的标志变量。 33. `while (getline(infile, line))`:逐行读取文件内容。 34. `if (line.substr(0, 10) == input_date)`:判断当前行是否为对应日期的日记。 35. `found = true;`:标记为找到了对应日期的日记。 36. `cout << line << endl;`:输出日期和时间。 37. `while (getline(infile, line) && line != "----------------------------------------")`:读取日记内容,直到遇到分隔符。 38. `cout << line << endl;`:输出日记内容。 39. `break;`:退出循环。 40. `infile.close();`:关闭文件。 41. `if (!found)`:如果没有找到对应日期的日记。 42. `cout << "没有找到对应日期的日记!" << endl;`:输出提示消息。 43. `return 0;`:程序结束。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值