[英]Is there a standard way to convert a std::string to std::chrono::time_point without using Boost?
[英]how to convert chrono::time_point to string without using array?
我在 12 天前发布了关于将 std::chrono::time_point 转换为字符串的问题并解决了问题。 我想对你说声谢谢。
我使用以下代码解决了我的问题:
char no[15];
string test;
chrono::system_clock::time_point now = chrono::system_clock::now();
time_t now_c = chrono::system_clock::to_time_t(now);
strftime(no, sizeof(no), "%Y%m%d%I%M%S", localtime(&now_c));
test = no;
cout << test <<endl;
但是,我不喜欢这段代码,因为我不想使用数组。 我想使用这样的内存分配来解决我的问题;
char* no = new char();
string test;
chrono::system_clock::time_point now = chrono::system_clock::now();
time_t now_c = chrono::system_clock::to_time_t(now);
strftime(no, sizeof(no), "%Y%m%d%I%M%S", localtime(&now_c));
test = no;
cout << test <<endl;
delete[]no;
不幸的是,这段代码不起作用。 我认为有一种方法可以做到这一点,但我不知道如何。
如果有人挑出我的错误或给我建议,我将不胜感激。
谢谢,
c00012
如评论中所述,您对原始代码中固定常量 (15) 的依赖是脆弱的; 您使用常量在堆上分配内存并不会使其不那么脆弱(实际上,您在额外代码中编写了一个错误)。
如果您要分配内存,请让标准库更安全地为您分配:
#include <chrono>
#include <ctime>
#include <iomanip>
#include <iostream>
#include <sstream>
int main()
{
const auto now{std::chrono::system_clock::now()};
const auto now_{std::chrono::system_clock::to_time_t(now)};
// A stream into which to write it.
std::stringstream ss;
ss << std::put_time(std::localtime(&now_), "%Y/%m/%d %I:%M:%S %p");
// Your string should now be obtainable via ss.str()
std::cout << ss.str();
return 0;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.