我設法將時間點轉換為整數,并使用類似于以下代碼的代碼將其寫入檔案:
std::ofstream outputf("data");
std::chrono::time_point<std::chrono::system_clock> dateTime;
dateTime = std::chrono::system_clock::now();
auto dateTimeSeconds = std::chrono::time_point_cast<std::chrono::seconds>(toSerialize->dateTime);
unsigned long long int serializeDateTime = toSerialize->dateTime.time_since_epoch().count();
outputf << serializeDateTime << "\n";
現在我正在嘗試從檔案中讀取該整數,將其轉換為 time_point,然后列印它。現在,我的代碼看起來像這樣:
std::ifstream inputf("data");
unsigned long long int epochDateTime;
inputf >> epochDateTime;
std::chrono::seconds durationDateTime(epochDateTime);
std::chrono::time_point<std::chrono::system_clock> dateTime2(durationDateTime);
std::time_t tt = std::chrono::system_clock::to_time_t(dateTime2);
char timeString[30];
ctime_s(timeString, sizeof(timeString), &tt);
std::cout << timeString;
但是,它不列印任何內容。有誰知道我哪里出錯了?
uj5u.com熱心網友回復:
您有一些奇怪的轉換并分配給您不使用的變數。如果您想將system_clock::time_points 存盤為std::time_ts 并從中恢復time_points,請不要涉及其他型別并使用為此制作的函式:to_time_t和from_time_t. 另外,檢查打開檔案和從檔案中提取是否有效。
例子:
#include <chrono>
#include <ctime>
#include <fstream>
#include <iostream>
int main() {
{ // save a time_point as a time_t
std::ofstream outputf("data");
if(outputf) {
std::chrono::time_point<std::chrono::system_clock> dateTime;
dateTime = std::chrono::system_clock::now();
outputf << std::chrono::system_clock::to_time_t(dateTime) << '\n';
}
}
{ // restore the time_point from a time_t
std::ifstream inputf("data");
if(inputf) {
std::time_t epochDateTime;
if(inputf >> epochDateTime) {
// use epochDateTime with ctime-like functions if you want:
std::cout << std::ctime(&epochDateTime) << '\n';
// get the time_point back (usually rounded to whole seconds):
auto dateTime = std::chrono::system_clock::from_time_t(epochDateTime);
// ...
}
}
}
}
uj5u.com熱心網友回復:
撇開日期值錯誤的可能性不談,這里的問題是sizeof(timeString). 看起來您認為它是30,但實際上它是 的大小char*,可能是 8(或者可能是 4)。
根據ctime_s:
在運行時檢測到以下錯誤并呼叫當前安裝的約束處理函式:
buf or timer is a null pointer bufsz is less than 26 or greater than RSIZE_MAX
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/483494.html
上一篇:Ionic-升級到CordovaAndroid10后,cordova-support-google-services插件無法安裝
