I would like to get timestamp from date time format in C . I wrote C style solution, but this->cache_time
doesn't promise \0
at the end because it is std::string_view
.
std::time_t client::get_cache_time() {
struct tm time;
if(strptime(this->cache_time.data(), "%a, %d %b %Y %X %Z", &time) != NULL) {
return timelocal(&time);
}
return 0;
}
Is there a strptime() alternative in c what can work with std::string_view
?
Thank you for help.
CodePudding user response:
I don't know if this solution is clean and memory efficient, but it works.
std::time_t client::get_cache_time() {
std::tm time;
std::istringstream buffer(std::string(this->cache_time));
buffer >> std::get_time(&time, "%a, %d %b %Y %X %Z");
if(!buffer.fail()) {
return timelocal(&time);
}
return 0;
}
std::string_view
is nice, but not supported everywhere.