Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么不是';这段代码有std::chrono::系统时钟工作吗?_C++_Time_Chrono - Fatal编程技术网

C++ 为什么不是';这段代码有std::chrono::系统时钟工作吗?

C++ 为什么不是';这段代码有std::chrono::系统时钟工作吗?,c++,time,chrono,C++,Time,Chrono,我试图创建一个程序,告诉我明天是什么日子(从1月1日开始),但我写下的代码似乎不起作用 这是我的代码: #include <iostream> #include <ctime> #include <ratio> #include <chrono> int main (int argc, char** argv) { std::chrono::system_clock::time_point today = std::chrono::system_

我试图创建一个程序,告诉我明天是什么日子(从1月1日开始),但我写下的代码似乎不起作用

这是我的代码:

#include <iostream>
#include <ctime>
#include <ratio>
#include <chrono>

int main (int argc, char** argv) {
std::chrono::system_clock::time_point today = std::chrono::system_clock::now();

std::tm timeinfo = std::tm();
timeinfo.tm_mon = 0;
timeinfo.tm_mday = 1;
std::time_t tt = std::mktime (&timeinfo);

std::chrono::system_clock::time_point tp = std::chrono::system_clock::from_time_t (tt);


std::chrono::duration<int,std::ratio<60*60*24> >one_day (1);


std::chrono::system_clock::time_point tomorrow = today + one_day;


std::time_t tv;

tt = std::chrono::system_clock::to_time_t ( today );
std::cout << "today is: " << ctime(&tv); 

tt = std::chrono::system_clock::to_time_t ( tomorrow );
std::cout << "tomorrow will be: " << ctime(&tv);

return 0;
}
#包括
#包括
#包括
#包括
int main(int argc,字符**argv){
std::chrono::system_clock::time_point today=std::chrono::system_clock::now();
std::tm timeinfo=std::tm();
timeinfo.tm_mon=0;
timeinfo.tm_mday=1;
std::time\u t tt=std::mktime(&timeinfo);
std::chrono::system_clock::time_point tp=std::chrono::system_clock::from_time_t(tt);
标准时间持续一天(1);
标准::时钟::系统时钟::时间点明天=今天+一天;
标准:时间电视;
tt=std::时钟::系统时钟::到时间(今天);

std::cout实际上你的程序是正确的。你只是把输出搞砸了。
ctime
中使用的变量是指(未初始化的)变量
tv
,而不是变量
tt
,它保存了你从
今天
明天
计算的值

tt = std::chrono::system_clock::to_time_t ( today );
std::cout << "today is: " << ctime(&tv); 

tt = std::chrono::system_clock::to_time_t ( tomorrow );
std::cout << "tomorrow will be: " << ctime(&tv);

实际上你的程序是正确的。你只是把输出搞乱了。
ctime
中使用的变量是指(未初始化的)变量
tv
,而不是变量
tt
,它保存了你从
今天
明天
计算的值

tt = std::chrono::system_clock::to_time_t ( today );
std::cout << "today is: " << ctime(&tv); 

tt = std::chrono::system_clock::to_time_t ( tomorrow );
std::cout << "tomorrow will be: " << ctime(&tv);

您的变量
tv
未初始化

请参见我对源代码的注释:

std::time_t tv; // uninitialized

tt = std::chrono::system_clock::to_time_t(today);
std::cout << "today is: " << ctime(&tv); // did you mean tt?

tt = std::chrono::system_clock::to_time_t(tomorrow);
std::cout << "tomorrow will be: " << ctime(&tv); // did you mean tt?
std::time\t tv;//未初始化
tt=std::时钟::系统时钟::到时间(今天);

std::cout您的变量
tv
未初始化

请参见我对源代码的注释:

std::time_t tv; // uninitialized

tt = std::chrono::system_clock::to_time_t(today);
std::cout << "today is: " << ctime(&tv); // did you mean tt?

tt = std::chrono::system_clock::to_time_t(tomorrow);
std::cout << "tomorrow will be: " << ctime(&tv); // did you mean tt?
std::time\t tv;//未初始化
tt=std::时钟::系统时钟::到时间(今天);

std::难道你的代码能完全满足你的期望吗?你能添加注释吗?这样我们就能理解你为什么期望它不这样做?为什么你期望默认初始化的std::time\t包含今天的日期?!我希望我的代码将'today'变量设置为1月1日,这是唯一的问题。你的代码完全满足你的期望你能添加注释以便我们理解为什么你希望它不这样做吗?为什么你希望默认初始化的std::time\t包含今天的日期?!我想让我的代码将'today'变量设置为1月1日,这是唯一的问题。不,这不能解决问题(见我的答案)。他使用了错误的变量来存储结果。
tv
未初始化是问题的一部分,但不是解决方案。@JanWinkler你是对的,因为它不太清楚,所以我添加了一条注释,告诉人们检查注释。不,这并不能解决问题(参见我的答案)。他使用了错误的变量来存储结果。
tv
未初始化是问题的一部分,但不是解决方案。@JanWinkler你是对的,因为它不太清楚,所以我添加了一条注释,告诉人们检查注释。无论谁否决了这个,请解释原因。这正好解决了OP的问题,并解释了出错的原因。不管是谁否决了这个,请解释原因。这正好解决了OP的问题,并解释了哪里出了问题。