파일이름을 시간데이터로 사용해서 만들어야 할 일이 생겼다.
밀리초 (내가 필요한건 0.11의 단위까지)까지 사용해야 해서 만든 함수 정리
#include <iostream>
#include <fstream>
#include <chrono> // 시간을 다루기 위한 C++ 표준 라이브러리.
#include <iomanip> // 출력 포맷을 설정하기 위해 사용 (예: std::setw, std::setfill).
#include <sstream>
std::wstring GetNowTime()
{
using namespace std::chrono;
system_clock::time_point now = system_clock::now(); // 현재 시스템 시간 Get
// time_t로 변환 => time_t: 유닉스 시간(초 단위로 표현된 시간).
time_t in_time_t = system_clock::to_time_t(now);
// 시간 정보 구조체 초기화
// localtime_s(&timeInfo, &in_time_t);
// localtime를 사용하면 Error 발생함.
struct tm timeInfo;
localtime_s(&timeInfo, &in_time_t); //
// 밀리초 추출
// now.time_since_epoch(): 1970년 1월 1일 (UTC 기준) 이후 경과한 시간을 가져온다고 한다.
auto duration = now.time_since_epoch();
// duration_cast<milliseconds> 시간을 밀리초 단위로 변환
// count(): 시간의 수치 값을 반환
// % 1000: 밀리초 값만 추출하기 위해 1000으로 나머지 연산
auto millis = duration_cast<milliseconds>(duration).count() % 1000;
// 파일 이름 생성
// std::put_time: struct tm 데이터를 포맷팅된 시간 문자열로 출력합니다.
std::wostringstream wss;
wss << std::put_time(&timeInfo, L"%Y%m%d_%H%M%S")
<< L'_' << std::setfill(L'0') << std::setw(3) << millis;
return wss.str();
// 밀리초를 따로 저장해서 시간 문자열 포맷팅 뒤에 추가.
}
int main(void)
{
std::wcout << GetNowTime() << "\n";
}
wstring이 필요해서 'wostringstream' 를 사용했는데 string이 필요하면 'ostringstream'를 사용하면 된다.