C++ 프로그래밍에서 문자열(std::string)과 정수(int) 타입의 데이터를 하나로 합쳐야 하는 경우가 자주 발생합니다. 이 글에서는 stringstream을 활용해 정수를 문자열로 변환한 뒤, 두 데이터를 연결하는 방법을 단계별로 알아보겠습니다.
왜 변환이 필요한가?
C++에서는 서로 다른 타입의 데이터를 + 연산자로 직접 연결할 수 없습니다. 따라서 정수를 먼저 문자열로 변환한 후에야 문자열과 이어 붙일 수 있습니다. stringstream은 숫자나 문자열을 받아 문자열 형태로 만들어 주는 편리한 기능을 제공합니다.
입력: 문자열 "str" 과 숫자 10 출력: 연결된 문자열 "str10"
알고리즘
1단계: 문자열과 숫자를 입력받는다 2단계: 숫자를 문자열로 변환한다 3단계: 두 값을 연결한다 4단계: 종료한다
예제 코드
아래 예제에서는 int_to_str() 함수를 통해 정수를 문자열로 변환합니다. stringstream 객체에 정수를 삽입(<<)한 뒤, str() 메서드로 결과 문자열을 얻어오는 방식입니다.
#include <iostream>
#include <sstream>
using namespace std;
string int_to_str(int x) {
stringstream ss;
ss << x;
return ss.str();
}
int main() {
string my_str = "This is a string: ";
int x = 50;
string concat_str;
concat_str = my_str + int_to_str(x);
cout << concat_str;
}실행 결과
This is a string: 50
참고: 대안적인 방법들
stringstream 외에도 C++11부터는 std::to_string() 함수를 사용할 수 있습니다. 이 함수는 std::to_string(50)처럼 간단히 호출하여 정수를 문자열로 변환해 주므로, 코드가 더욱 간결해집니다. 또한 std::ostringstream이나 C 스타일의 sprintf()도 대안으로 활용할 수 있지만, 타입 안전성과 사용 편의성 측면에서 std::to_string()이 가장 권장됩니다.