C++의 string 클래스는 int나 float, double 같은 타입을 변환하는 메소드를 가지고 있지 않습니다.
다만 표준인 stringstream이나 boost의 lexical_cast를 활용해서 변환이 가능합니다.
이 방법 외에도 C++11에서 추가된 std::to_string()을 통해 변환이 가능합니다.
반대로 string을 int로 변환 역시 지원하며 아래 링크에서 확인 가능합니다.
2019/11/18 - [Programming/C&CPP] - C++ string을 int로 변경하는 방법
C++에서 int 등의 numeric 타입을 string으로 변환하는 다양한 방법들을 살펴보겠습니다.
1. std::stringstream 사용
std::stringstream은 int를 string을 변환하거나 그 반대 기능을 할 수 있습니다.
#include <iostream>
#include <sstream>
int main()
{
int i = 123;
std::stringstream ssInt;
ssInt << i;
double d = 12.3456;
std::stringstream ssDouble;
ssDouble << d;
std::cout << ssInt.str() << std::endl;
std::cout << ssDouble.str() << std::endl;
return 0;
}
int 변수를 << 연산자를 통해 입력하면 간단하게 변환됩니다.
string으로 출력하려면 str()이라는 메소드를 호출하면 됩니다.
예제에서와 같이 double 타입 역시 변환이 가능합니다.
2. boost::lexical_cast 사용
boost::lexical_cast를 사용해서 변환하는 것도 가능합니다.
이 경우 변환할 타입을 입력해주면 해당 타입으로 변환이 됩니다.
#include <iostream>
#include <string>
#include <boost/lexical_cast.hpp>
int main()
{
int i = 123;
double d = 12.3456;
std::cout << boost::lexical_cast<std::string>(i) << std::endl;
std::cout << boost::lexical_cast<std::string>(d) << std::endl;
return 0;
}
다음과 같은 결과가 표시됩니다.
double 타입의 경우 위와 같이 표시될 수 있기 때문에 주의해서 사용하면 됩니다.
3. std::to_string() 사용
C++11에 새롭게 std::to_string()이 포함되었습니다.
<string> 헤더에 포함되어 있으며 int나 double 등의 값을 입력하기만 하면 됩니다.
#include <iostream>
#include <string>
int main()
{
int i = 123;
double d = 12.3456;
std::cout << std::to_string(i) << std::endl;
std::cout << std::to_string(d) << std::endl;
return 0;
}
결과는 다음과 같이 표시됩니다.
int 타입의 경우 동일하게 변경되지만 double은 소수점 6자리까지 표시됩니다.
해당 특성을 파악하고 float, double, long double 등을 변환할 때는 주의해서 사용하면 됩니다.
C++11을 적용 가능할 때 int나 long 형태를 변환할 때는 std::to_string()을 사용하는 것이 편리합니다.
그 외에 boost가 사용 가능하거나 C++11 이전에 C++만 사용한 경우에 맞춰서 선택하면 됩니다.
'Programming > C&CPP' 카테고리의 다른 글
C++ 벡터(vector) 혹은 배열에서 최대값, 최소값 찾기 (0) | 2020.09.14 |
---|---|
C++ string을 int로 변경하는 방법 (0) | 2019.11.18 |
C++ std::string 토큰(Token) 분리 방법(Tokenize) (0) | 2018.11.22 |
C++ 홀수/짝수(홀짝) 구분 방법 (0) | 2018.10.28 |
C++ volatile 키워드 사용 (0) | 2017.08.13 |