BOOL Program::LoadJsonConfig()
{
namespace fs = std::filesystem;
wchar_t exePathStr[4096];
GetModuleFileName(NULL, exePathStr, 4096);
fs::path exePath = exePathStr;
fs::path jsonConfPath = exePath.replace_extension("config.json");
if (fs::is_regular_file(jsonConfPath) == false)
{
return FALSE;
}
std::ifstream jsonConfFile(jsonConfPath);
try
{
jsonConfFile >> m_jsonConfig;
}
catch (...)
{
jsonConfFile.close();
return FALSE;
}
jsonConfFile.close();
return TRUE;
}
C++11에 추가된 filesystem으로 실행된 exe과 동일한 이름의 config.json 파일을 읽는 코드.
c++ filesystem 은 이제 다른 스크립트언어에 지원하는 file 처리 내용과 유사하게 지원해 줘서 c++ 에서 이런 저런 내용 처리하기가 많이 편해진것 같다.
예전에 텍스트 파일 일괄 처리할 일이 있었는데 c++에서 정규표현식도 지원되고 파일시스템도 지원되니 가끔 써서 어색한 스크립트보다 그냥 자주써서 편한 C++로 작성하고 돌림.
작성 후 컴파일 해서 적용해야 한다는게 단점이지만 실행속도가 빠르니 대용량 처리할때는 나름 장점이 있다.