C++ 如何用自己的值填充tm结构,然后打印出来?
我想用小时、分钟和秒的自定义值填充我的tm结构,然后使用std::put_time()输出它 我的代码位于保存日期和时间的自定义类的to_字符串函数中:C++ 如何用自己的值填充tm结构,然后打印出来?,c++,iomanip,C++,Iomanip,我想用小时、分钟和秒的自定义值填充我的tm结构,然后使用std::put_time()输出它 我的代码位于保存日期和时间的自定义类的to_字符串函数中: std::string Gregorian::to_string() const { std::ostringstream oss; struct std::tm *tmTime; //This is where I add my custom time values tmTime->tm_hour =
std::string Gregorian::to_string() const {
std::ostringstream oss;
struct std::tm *tmTime;
//This is where I add my custom time values
tmTime->tm_hour = hour_;
tmTime->tm_min = minute_;
tmTime->tm_sec = second_;
oss << civil::day_name( day_of_week( to_jd() ) ) << ", ";
oss << gregorian_month_name( month_ ) << ' ' << (unsigned) day_ << ' ';
if( year_ <= 0 )
oss << (-year_ + 1) << " BCE";
else
oss << year_ << " CE, ";
//i'm trying to use std::put_time here but it prints nothing
oss << std::put_time(tmTime, "%r");
return oss.str();
}
“CE”后面的空格是时间应该在哪里
另外,将其更改为:
struct std::tm tmTime;
tmTime.tm_hour = hour_;
tmTime.tm_min = minute_;
tmTime.tm_sec = second_;
以及:
oss在这行中
struct std::tm *tmTime;
您有一个尚未初始化的指针。在接下来的几行中,您将使用未初始化的指针访问结构的成员。这就是未定义行为的原因
正如πάντα的评论中所建议的那样ῥεῖ, 您需要使用:
struct std::tm tmTime;
tmTime.tm_hour = hour_;
tmTime.tm_min = minute_;
tmTime.tm_sec = second_;
在这方面,
struct std::tm *tmTime;
您有一个尚未初始化的指针。在接下来的几行中,您将使用未初始化的指针访问结构的成员。这就是未定义行为的原因
正如πάντα的评论中所建议的那样ῥεῖ, 您需要使用:
struct std::tm tmTime;
tmTime.tm_hour = hour_;
tmTime.tm_min = minute_;
tmTime.tm_sec = second_;
在这方面,
struct std::tm *tmTime;
您有一个尚未初始化的指针。在接下来的几行中,您将使用未初始化的指针访问结构的成员。这就是未定义行为的原因
正如πάντα的评论中所建议的那样ῥεῖ, 您需要使用:
struct std::tm tmTime;
tmTime.tm_hour = hour_;
tmTime.tm_min = minute_;
tmTime.tm_sec = second_;
在这方面,
struct std::tm *tmTime;
您有一个尚未初始化的指针。在接下来的几行中,您将使用未初始化的指针访问结构的成员。这就是未定义行为的原因
正如πάντα的评论中所建议的那样ῥεῖ, 您需要使用:
struct std::tm tmTime;
tmTime.tm_hour = hour_;
tmTime.tm_min = minute_;
tmTime.tm_sec = second_;
我同意,这应该对你有用。
你在用什么编译器?您可能有未初始化的小时
、分钟
或秒
。或者,put_time
需要将tm_mday
、tm_mon
、和tm_year
设置为法定值以输出时间
通过评论的方式,你似乎在加倍增加你的年/月/日信息。我认为你应该能够做一些类似于put_time(tmTime,tmTime->tm_year>-1990?”%A,%B%e%Y AD,%r:“%A,%B%e%Y BC,%r”)代码>我同意,这应该适合你。
你在用什么编译器?您可能有未初始化的小时
、分钟
或秒
。或者,put_time
需要将tm_mday
、tm_mon
、和tm_year
设置为法定值以输出时间
通过评论的方式,你似乎在加倍增加你的年/月/日信息。我认为你应该能够做一些类似于put_time(tmTime,tmTime->tm_year>-1990?”%A,%B%e%Y AD,%r:“%A,%B%e%Y BC,%r”)代码>我同意,这应该适合你。
你在用什么编译器?您可能有未初始化的小时
、分钟
或秒
。或者,put_time
需要将tm_mday
、tm_mon
、和tm_year
设置为法定值以输出时间
通过评论的方式,你似乎在加倍增加你的年/月/日信息。我认为你应该能够做一些类似于put_time(tmTime,tmTime->tm_year>-1990?”%A,%B%e%Y AD,%r:“%A,%B%e%Y BC,%r”)代码>我同意,这应该适合你。
你在用什么编译器?您可能有未初始化的小时
、分钟
或秒
。或者,put_time
需要将tm_mday
、tm_mon
、和tm_year
设置为法定值以输出时间
通过评论的方式,你似乎在加倍增加你的年/月/日信息。我认为你应该能够做一些类似于put_time(tmTime,tmTime->tm_year>-1990?”%A,%B%e%Y AD,%r:“%A,%B%e%Y BC,%r”)代码>问题出在哪里?您有什么输出?更改struct std::tm*tmTime代码>到struct std::tm tmTime编码>并使用tmTime.tm\u hour=hour代码>等。您正在写入未初始化的内存。问题出在哪里?您有什么输出?更改struct std::tm*tmTime代码>到struct std::tm tmTime编码>并使用tmTime.tm\u hour=hour代码>等。您正在写入未初始化的内存。问题出在哪里?您有什么输出?更改struct std::tm*tmTime代码>到struct std::tm tmTime编码>并使用tmTime.tm\u hour=hour代码>等。您正在写入未初始化的内存。问题出在哪里?您有什么输出?更改struct std::tm*tmTime代码>到struct std::tm tmTime编码>并使用tmTime.tm\u hour=hour代码>等等。你在写未初始化的内存。你知道为什么这对我不起作用吗?这是我最初使用的方式。@kburlz,您应该在tmTime
中设置所有字段的值。std::put_time
也可能取决于其他字段的值。你知道为什么这对我不起作用吗?这是我最初使用的方式。@kburlz,您应该在tmTime
中设置所有字段的值。std::put_time
也可能取决于其他字段的值。你知道为什么这对我不起作用吗?这是我最初使用的方式。@kburlz,您应该在tmTime
中设置所有字段的值。std::put_time
也可能取决于其他字段的值。你知道为什么这对我不起作用吗?这是我最初使用的方式。@kburlz,您应该在tmTime
中设置所有字段的值。std::put_time
也可能取决于其他字段的值。