C++ 프로그래밍을 하다 보면 정수(int) 값을 문자열(string)로 변환해야 하는 상황이 자주 발생합니다. 예를 들어 숫자와 텍스트를 함께 출력하거나, 파일·네트워크로 데이터를 전송할 때 그렇습니다. 대표적인 변환 방법으로는 C 언어의 itoa 함수를 사용하는 방법과, C++11부터 표준에 추가된 to_string 함수를 사용하는 방법이 있습니다.
1. itoa 함수를 사용한 변환
C 언어에서 제공하는 itoa 함수를 활용하면 정수를 문자열로 바꿀 수 있습니다. 다음 예제를 살펴보세요.
#include<iostream>
#include<cstdlib>
using namespace std;
int main() {
int a = 10;
char buffer[20];
char *intStr = itoa(a, buffer, 10); // 값, 버퍼, 진법(10진수)
string str = string(intStr);
cout << str;
return 0;
}
출력 결과
10
itoa 함수는 세 개의 인자를 받습니다. 첫 번째는 변환할 정수, 두 번째는 결과를 저장할 문자 버퍼, 세 번째는 진법(여기서는 10진수)입니다. 주의할 점은 itoa가 ANSI 표준에 포함되지 않은 비표준 함수라는 것입니다. 따라서 컴파일러나 플랫폼에 따라 지원되지 않을 수 있으며, 이식성이 중요한 프로젝트에서는 사용을 피하는 것이 좋습니다.
2. to_string 함수를 사용한 변환 (C++11 권장)
C++11부터는 표준 라이브러리에 to_string 함수가 추가되어 훨씬 간편하게 정수를 문자열로 변환할 수 있습니다. 별도의 버퍼도 필요 없고, 모든 표준 호환 컴파일러에서 동작하기 때문에 현재 가장 권장되는 방법입니다.
#include<iostream>
#include<string>
using namespace std;
int main() {
int a = 10;
string str = to_string(a);
cout << str;
return 0;
}
출력 결과
10
to_string 함수는 헤더를 포함하기만 하면 되며, int뿐만 아니라 long, float, double 등 다양한 숫자 타입도 오버로드를 통해 지원합니다.
정리
두 방식 모두 정수를 문자열로 변환한다는 동일한 목적을 가지지만, itoa는 비표준 함수라 환경에 따라 사용할 수 없을 수 있습니다. 반면 to_string은 C++11 표준에 포함되어 있어 안전하고 이식성이 뛰어납니다. 특별한 이유가 없다면 std::to_string을 사용하는 것이 가장 좋은 선택입니다.