I-前天是哪天_岭南师范学院2025年蓝桥杯选拔赛报名赛暨资格赛 (nowcoder.com)
主要用到了c++ <ctime>的函数和结构 解题要先将字符串转化为输入流 用tm结构接收 然后转换为time_t结构 便于时间的相加减 之后转化为字符串输出流 输出返回结果
#include <iostream>
#include <iomanip>
#include <ctime>
#include <sstream>
#include <string>
using namespace std;
//定义一个时间相减的函数
string subtract_days(string &input_date,int days){
//创建一个tm结构
tm tm_date = {};
//将传入的字符串转换为输入流
istringstream iss(input_date);
//获取时间 为Y-M-D的结构表示时间的结构是这样子的
iss >> get_time(&tm_date, "%Y-%y-%d");
//将tm结构转化为time_t结构(用秒表示)
time_t time_date = mktime(&tm_date);
//减去时间
time_date -= 2 * 24 * 60 * 60;
//将time_t转换为tm结构
tm_date = *localtime(&time_date);
//将tm结构转换为string输出流
ostringstream oss;
//转化为string输出流
oss << put_time(&tm_date,"%Y-%y-%d");
return oss.str(); //返回string流
}
//2020-11-15
int main() {
//注意 字符串输入 遇到空格就停止
string input_date; //这是输入的时间
cin >> input_date;
string output_date = subtract_days(input_date,2);
cout << output_date << endl;
return 0;
}
输出