개요
printf
와 같이 서식을 사용하여 문자열을 초기화 하고자 합니다.
본문
코드
// myString.cpp
#include <string>
#include <iostream>
#include <cstdarg>
#include <cstdio>
class myString : public std::string
{
public:
myString(const std::string fmt, ...);
};
myString::myString(const std::string fmt, ...)
{
va_list args, argtmp;
va_start(args, fmt);
va_copy(argtmp, args);
int len = vsnprintf(nullptr, 0, fmt.c_str(), argtmp);
char *buf = new char[len];
if (buf!=nullptr)
{
vsnprintf(buf, len+1, fmt.c_str(), args);
assign(buf);
delete []buf;
}
else
clear();
va_end(args);
}
int main()
{
myString testString{"Hello, %s %d\n", "world", 2001};
std::cout << testString << std::endl;
}
컴파일
$ g++ -std=c++11 myString.cpp
실행 및 결과
$ ./a.out
Hello World 2001
'프로그래밍 언어 > C++' 카테고리의 다른 글
[C++] 포인터를 참조형 파라미터 함수의 인자로 사용하기 (0) | 2022.10.01 |
---|---|
C++ 기본입력 (문자열 입력받기) (0) | 2020.02.10 |
C++ 가변 배열(Variable Sized Arrays) (0) | 2020.02.10 |
C++ String (0) | 2018.10.19 |
C++ 클래스(Class) (0) | 2018.07.06 |