std::string을 사용하다보면 sprintf나 CString 등과 같이 format 기능을 이용하여 문자열을 만들고싶을떄가 있다.
이런 상황을 위한 방법을 정리.
아래와 같이 정의된 string_format 함수를 이용하여 format 과 동일하게 사용 가능하다.
template<typename ... Args>
std::string string_format(const std::string& format, Args ... args)
{
size_t size = snprintf(nullptr, 0, format.c_str(), args ...) + 1; // Extra space for '\0'
if (size <= 0) { throw std::runtime_error("Error during formatting."); }
std::unique_ptr<char[]> buf(new char[size]);
snprintf(buf.get(), size, format.c_str(), args ...);
return std::string(buf.get(), buf.get() + size - 1); // We don't want the '\0' inside
}
// 사용법
std::string sResult = "";
std::string stringValue = "string...";
int intValue = 999;
sResult = string_format("string format example : %s / %d", stringValue, intValue);
'Programming > C, C++, MFC' 카테고리의 다른 글
MFC Dialog 에서 enter, esc 동작을 제어하자 (0) | 2020.11.10 |
---|---|
하위폴더 포함, 폴더 전체를 복사하자 (0) | 2020.11.10 |
CStdioFile 을 이용한 파일 입출력에서 내용이 깨질경우 (0) | 2019.07.09 |
Unicode 환경에서 한글이 깨질경우 해결방법 (0) | 2019.03.11 |
cout을 이용할때 출력 정밀도를 제어해 보자 (0) | 2018.07.26 |