Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++에서 sprintf()에 해당하는 기능: ostringstream 완벽 가이드

C 언어와 C++에는 모두 sprintf() 함수가 존재합니다. 이 함수는 다양한 데이터를 하나의 문자열 안에 저장하는 데 사용됩니다. 사용 문법은 printf() 함수와 거의 동일하지만, 유일한 차이점은 결과를 저장할 문자열 버퍼를 직접 지정해야 한다는 점입니다.

C++에서는 ostringstream(출력 문자열 스트림)을 사용하여 동일한 작업을 더 안전하고 편리하게 수행할 수 있습니다. ostringstream<sstream> 헤더 파일에 정의되어 있으며, 숫자나 실수 등 다양한 타입의 데이터를 자동으로 문자열로 변환해 줍니다. 또한 버퍼 크기를 미리 계산할 필요가 없어 sprintf()보다 버퍼 오버플로우 위험이 적다는 장점도 있습니다.

예제 코드

#include<iostream>
#include<sstream>
using namespace std;
int main() {
    string my_str;
    ostringstream os;
    os << "This is a string. We will store " << 50 << " in it. We can store " << 52.32 << " also.";
    my_str = os.str(); // 스트림 내용을 my_str 문자열로 변환
    cout << my_str;
}

실행 결과

This is a string. We will store 50 in it. We can store 52.32 also.

코드 설명

위 예제에서는 먼저 ostringstream 객체 os를 생성합니다. 그런 다음 << 연산자를 사용하여 문자열, 정수(50), 실수(52.32)를 스트림에 차례대로 삽입합니다. 마지막으로 str() 메서드를 호출하면 스트림에 누적된 모든 내용이 하나의 std::string으로 변환되어 my_str 변수에 저장됩니다.

이처럼 ostringstream은 C 스타일의 sprintf()를 대체하는 현대적인 C++ 방식으로, 타입 안정성과 코드 가독성 면에서 훨씬 우수한 선택입니다.