Programming/C&CPP

C++ int를 string으로 변경하는 방법

psychoria 2019. 11. 15. 14:00
반응형

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++ string을 int로 변경하는 방법

프로그래밍을 하다 보면 다양한 타입들을 변환해야 하는 상황이 생깁니다. C++에서 int나 long 타입을 string으로 변환하는 것은 아래에서 확인 가능합니다. 2019/11/15 - [Programming/C&CPP] - C++ int를 string..

psychoria.tistory.com

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()이라는 메소드를 호출하면 됩니다.

std::stringstream 결과

예제에서와 같이 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;
}

다음과 같은 결과가 표시됩니다.

boost::lexical_cast 결과

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;
}

결과는 다음과 같이 표시됩니다.

std::to_string 결과

int 타입의 경우 동일하게 변경되지만 double은 소수점 6자리까지 표시됩니다.

해당 특성을 파악하고 float, double, long double 등을 변환할 때는 주의해서 사용하면 됩니다.

 

C++11을 적용 가능할 때 int나 long 형태를 변환할 때는 std::to_string()을 사용하는 것이 편리합니다.

그 외에 boost가 사용 가능하거나 C++11 이전에 C++만 사용한 경우에 맞춰서 선택하면 됩니다.

반응형