家具品牌网站怎么做,长沙工商注册网上登记,深圳小程序app开发,狮山建网站1360. 日期之间隔几天
简单
请你编写一个程序来计算两个日期之间隔了多少天。
日期以字符串形式给出#xff0c;格式为 YYYY-MM-DD#xff0c;如示例所示。
示例 1#xff1a;
输入#xff1a;date1 “2019-06-29”, date2 “2019-06-30” 输出#xff1a;1 示例 2…1360. 日期之间隔几天
简单
请你编写一个程序来计算两个日期之间隔了多少天。
日期以字符串形式给出格式为 YYYY-MM-DD如示例所示。
示例 1
输入date1 “2019-06-29”, date2 “2019-06-30” 输出1 示例 2
输入date1 “2020-01-15”, date2 “2019-12-31” 输出15
提示
给定的日期是 1971 年到 2100 年之间的有效日期。
//利用前缀和的思想把1971到date1的天数与1971到date2的天数作差取绝对值。
class Solution {
public:int daysBetweenDates(string date1, string date2) {return abs(get(date1) - get(date2));}bool isleap(int year) {return year % 4 0 year % 100 ! 0 || year % 400 0;//能被4整除但不能被100整除//能被400整除。}int m_days[13] {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};int get(string date) {int year, month, day;sscanf(date.c_str(), %d-%d-%d, year, month, day);int days 0;for (int i 1971; i year; i) days 365 isleap(i);for (int i 1; i month; i) {if (i 2) days 28 isleap(year);else days m_days[i];}return days day;}
};sscanf
std::string data;
sscanf(date.c_str(), %d-%d-%d, year, month, day);这行代码是使用C/C中的sscanf函数来将字符串date按照指定的格式%d-%d-%d解析并将解析后的整数值分别存储在year、month和day这三个变量中。
假设date是一个字符串例如2022-10-15sscanf函数会按照%d-%d-%d的格式解析该字符串将第一个整数值解析为year变量的值第二个整数值解析为month变量的值第三个整数值解析为day变量的值。
在这段代码中如果date的格式与%d-%d-%d匹配成功year将被赋值为2022month将被赋值为10day将被赋值为15。
这种操作常用于从字符串中提取特定格式的数据特别是处理日期格式时非常有用。
date.c_str()
date.c_str() 是C中的字符串类如std::string提供的一个成员函数用于返回一个指向以空字符结尾的字符数组C风格字符串的指针。这个函数通常用于将C的std::string对象转换为C风格的字符串以便与使用C风格字符串的函数进行交互。
当你调用c_str() 方法时它会返回一个指向字符串数据的指针该字符串数据以空字符‘\0’结尾这使得它符合C语言要求的字符串表示形式。 例如如果有一个std::string对象str你可以使用str.c_str()来获取一个指向该字符串数据的C风格字符串。 这种方法在需要将C字符串传递给期望C风格字符串的函数时非常有用因为许多C库函数或API都期望以C风格字符串作为参数。