코테를 준비하면서 문제를 풀 때 등 일반적으로 C++ 로 코딩하면서 가장 많이 접하게 되는 작업 중 하나가 문자열(string)과 숫자(int)사이에서의 형 변환이 아닐까 싶습니다.
stringstream을 사용한다거나 루프를 사용하는 등 다양한 형 변환 방법들이 있지만, 이 번 포스팅에서는 to_string 함수를 사용하여 숫자형을 string형으로 변환하는 방법에 대해 다루어 보겠습니다.
string형을 숫자형으로 변환하는 방법은 다음 포스팅을 참고해주세요.
먼저 함수들을 사용하기 위해 string 헤더파일을 잊지말고 include 해주세요.
#include <string>
to_string 함수 구문
해당 숫자형을 string 문자열로 변환합니다.
string to_string (int val);
string to_string (long val);
string to_string (long long val);
string to_string (unsigned val);
string to_string (unsigned long val);
string to_string (unsigned long long val);
string to_string (float val);
string to_string (double val);
string to_string (long double val);
매개변수
(필수사항) val: 문자열로 변환할 숫자입니다.
반환값
변환된 string 문자열입니다. 실수인 경우, 소수 6번째자리까지 표현합니다.
숫자형 -> string형 변환 예제
어떤 숫자형이든 to_string() 함수를 통해 string 문자열로 형 변환할 수 있습니다.
#include <cstring>
#include <iostream>
#include <string>
using namespace std;
int main() {
// 정수
int inum = 1234;
long lnum = 1234;
long long llnum = 1234;
unsigned unum = 1234;
unsigned long ulnum = 1234;
unsigned long long ullnum = 1234;
string sinum = to_string(inum);
string slnum = to_string(lnum);
string sllnum = to_string(llnum);
string sunum = to_string(unum);
string sulnum = to_string(ulnum);
string sullnum = to_string(ullnum);
cout << "int에서 변환: " << sinum << endl;
cout << "long에서 변환: " << slnum << endl;
cout << "long long에서 변환: " << sllnum << endl;
cout << "unsigned에서 변환: " << sunum << endl;
cout << "unsigned long에서 변환: " << sulnum << endl;
cout << "unsigned long long에서 변환: " << sullnum << endl;
// 실수
float fnum = 1234.56f;
double dnum = 1234.56;
long double ldnum = 1234.56;
string sfnum = to_string(fnum);
string sdnum = to_string(dnum);
string sldnum = to_string(ldnum);
cout << "float에서 변환: " << sfnum << endl;
cout << "double에서 변환: " << sdnum << endl;
cout << "long double 변환: " << sldnum << endl;
}
결과값:
마무리
float에서 string 문자열로 변환한 결과값에서도 볼 수 있는 주의점은 부동 소수점 자료형(float, double, long double)의 변수가 가지는 정밀도(precision)입니다.
정밀도는 신뢰 가능한 표현 범위를 의미합니다. 따라서 자료형의 표현가능한 범위내 근사치가 됩니다.
출력 스트림에서 소수점 이하 값을 표현할 때 신뢰 가능한 수준은 float
의 경우 6자리, double
의 경우 14자리 정도입니다.
자세한 것은 다음 링크를 참고해주세요.