정수(int), 실수(float)를 문자열로 변환하기
정수나 실수를 문자열로 변환하는 방법에는 여러가지가 있습니다.
가장 흔히 쓸 수 있는 std::to_string()
부터 std::stringstream
을 사용하는 방법, 그리고 안전하지 않지만 sprintf()를 사용하는 방법이 있습니다.
std::to_string()
std::to_string() 함수는 C++의 <string>
헤더에 정의되어 있는 함수로, 정수나 실수를 문자열로 변환해주는 함수입니다. 주어진 숫자 값을 해당 숫자를 나타내는 문자열로 변환하여 반환합니다.
이때, 숫자의 범위를 벗어나는 값은 inf
로 출력되며, 만약 변환하지 못하는 값에 대해서는 예외가 발생합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <string>
using namespace std;
int main()
{
int num1 = 123;
float num2 = 3.141592;
float num3 = 3e+39;
string s1 = to_string(num1);
string s2 = to_string(num2);
string s3 = to_string(num3);
cout << "num1: " << s1 << '\n';
cout << "num2: " << s2 << '\n';
cout << "num3: " << s3 << '\n';
}
std::stringstream 클래스와 str()
std::stringstream 클래스를 사용하면, 문자열 스트림을 생성하고 입력, 출력 등의 작업을 수행할 수 있습니다.
해당 클래스는 <sstream>
헤더에 정의되어 있습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int main()
{
int num = 123;
float fnum = 3.141592;
string str;
stringstream ss;
ss << num;
str = ss.str();
cout << "num: " << str << '\n';
ss.str("");
ss << fnum;
str = ss.str();
cout << "fnum: " << str << '\n';
}
sprinft(문자 변수, 서식, 숫자)
sprintf() 함수는 C 언어의 표준 라이브러리에 속하는 함수로, 문자열을 서식화된 형태로 만들어줍니다. 다른 말로 하면, 지정한 형식에 따라 변수의 값을 문자열로 변환하여 지정한 문자열에 저장하는 함수입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
#define _CRT_SECURE_NO_WARNINGS // sprintf 보안 경고로 인한 컴파일 에러 방지
#include <cstdio>
int main() {
float num = 3.141592;
char str[10];
sprintf(str, "%f", num);
printf("%s", str);
return 0;
}
다만, 주의해야 할 점은 sprintf()
함수는 버퍼 오버플로우와 같은 보안 문제를 야기할 수 있다는 점입니다. 버퍼의 크기를 초과하여 데이터가 쓰여질 경우 예상치 못한 결과가 발생할 수 있습니다.
따라서 std::to_string()
함수를 이용하거나 std::stringstream
클래스를 사용하는 것을 추천합니다.
참조
이 기사는 저작권자의 CC BY-NC-ND 4.0 라이센스를 따릅니다.