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

이 블로그에서는 C++에서 int를 string으로 변환하는 방법을 다룹니다. 우리는 int를 string으로 변환하는 데 도움이 되는 다양한 방법을 살펴보고 구현 방법을 배워보겠습니다.

C++ int를 string으로 변환하는 3가지 방법

1. to_string() 메서드를 사용하여 정수를 문자열로 변환하기

정수나 다른 데이터 형식의 변수나 값을 문자열로 명시적으로 변환하는 가장 간단하고 일반적인 방법은 to_string() 메서드를 사용하는 것입니다. to_string() 메서드에 변수나 값에 대한 매개변수 하나를 사용합니다. to_string() 메서드를 사용하는 구문은 다음과 같습니다.

string s = to_string(var);

여기서 ‘var’는 문자열로 변환해야 하는 변수이고 ‘s’는 변환된 문자열 변수입니다.

다음 예를 통해 명확한 아이디어를 얻을 수 있습니다.

// 필수 헤더 파일 포함
#include <iostream>  
#include <string>  
#include <cstring>

using namespace std;  

// 메인 함수
int main()  
{  
 int n;  
 cout << "문자열로 변환할 정수를 입력하세요: ";
 cin >> n;
 string st = to_string(n);    // 정수를 문자열로 변환
 cout << "입력한 정수의 문자열 값은 : " << st << endl;  

 // 문자열 변환 성공 여부 확인
  cout << typeid(st).name();
  return 0;
}  
output
문자열로 변환할 정수를 입력하세요: 1234
입력한 정수의 문자열 값은 : 1234
class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >

위 코드의 출력에서 볼 수 있듯이, typeid(st).name은 문자열을 반환합니다. 따라서 정수 n이 to_string() 함수를 사용하여 성공적으로 문자열 st로 변환되었습니다. 또한 성공적인 변환이 아니었다면 to_string() 메서드의 결과가 처음부터 문자열 형식 변수 ‘st’에 저장되지 않았을 것이며 오류가 발생했을 것입니다.

2. stringstream 클래스를 사용하여 정수를 문자열로 변환하기

다른 정수를 문자열로 변환하는 일반적인 방법은 stringstream 클래스를 사용하는 것입니다. 이 스트림 클래스는 헤더 파일 자체에 정의되어 있으며 문자열 기반 스트림에서 입력 및 출력 작업을 수행하는 데 사용됩니다. C++의 다음 연산자들은 각각 데이터를 추출하고 데이터를 데이터로 넣는 데 사용됩니다.

>> (추출) 연산자: 이 연산자는 문자열 스트림에서 데이터를 가져오는 데 사용됩니다.
예: StrStreamVar >> 11;
<< (삽입) 연산자: 이 연산자는 데이터를 문자열 스트림에 넣을 때 사용됩니다.
예: StrStreamVar << 11;

구문은 다음과 같습니다.

Stringstream st;             // stringstream 객체 선언
st << var;                      // 스트림에 쓰기
string s;                        // 변환된 문자열을 저장할 문자열 변수 선언
st >> s;                        // 스트림에서 문자열 추출

여기서 ‘st’는 스트림에 쓰기 및 스트림에서 추출하는 데 사용되는 stringstream 클래스의 객체입니다. ‘var’는 스트림에 넣을 값을 보유하는 변수이고 ‘s’는 추출된 문자열을 저장하는 문자열 변수입니다.

다음 예를 통해 stringstream 클래스를 사용하여 C++에서 int를 string으로 변환하는 방법을 이해할 수 있습니다.

// 필수 헤더 파일 포함
#include <iostream>  
#include<sstream>  

using namespace std;

// 메인 함수
int main()
{
    int var;
    cout << "정수 값을 입력하세요 : ";
    cin >> var;
    stringstream str;  // stringstream 객체 선언
    str << var;      // 스트림에 쓰기
    string svar;
    str >> svar;  // 스트림에서 문자열 추출
    cout << "\n" << "입력한 정수 값은 : " << var << "\n";  
    cout << "이 값의 문자열 표현은 : " << svar;
    return 0;
}
output

정수 값을 입력하세요 : 1234

입력한 정수 값은 : 1234
이 값의 문자열 표현은 : 1234

여기서 우리는 stringstream 클래스를 사용하고 있으며 이 클래스는 입력 정수 값을 문자열로 변환합니다. 여기서도 추출된 값을 문자열 변수 ‘svar’에 저장하고 성공적인 문자열로 변환 하였습니다. 또한 to_string() 함수를 사용하여 정수를 문자열로 변환하는 예에서 수행한 것처럼 변수 ‘i’의 데이터 형식을 type_id().name(svar)를 사용하여 확인할 수 있습니다.

이 방법을 사용하여 반대로 작업을 수행할 수도 있습니다. 즉, stringstream을 사용하여 문자열 값을 정수 값으로 변환할 수 있습니다. 명확성을 위해 다음 예제를 실행하는 것을 고려하십시오.

// 필수 헤더 파일 포함

#include <iostream>  
#include<sstream>  

using namespace std;  

// 메인 함수
int main()  
{  
  string str_num;
  cout << "정수로 변환할 문자열을 입력하세요: "; 
  cin >> str_num;  
  stringstream strstream;       // stringstream 객체 선언
  strstream << str_num;        // 스트림에 문자열 쓰기
  int num;  
  strstream >> num;            // 정수 형태의 문자열에서 스트림 추출
  cout << "입력한 문자열은 : " << str_num << endl;  
  cout << "이 문자열의 정수 값은 : " << num;  
  return 0;
}  
output
정수로 변환할 문자열을 입력하세요: 1234
입력한 문자열은 : 1234
이 문자열의 정수 값은 : 1234

여기서 문자열 입력은 사용자로부터 받고, 이를 stringstream 클래스를 사용하여 정수로 변환합니다. 변수 ‘num’은 변환된 정수 값을 보유합니다. type_id(i).name()을 사용하면 변수 ‘num’의 데이터 형식을 확인할 수 있습니다.

3. boost::lexical_cast를 사용하여 정수를 문자열로 변환하기

C++에서 정수 값을 문자열 값으로 변환하는 세 번째 방법은 boost 라이브러리의 boost.lexical cast() 연산자를 사용하는 것입니다. 이 형 변환을 문자열 변환에 사용하는 방식은 다른 데이터 형식 변환에도 아주 잘 사용될 수 있습니다. boost.lexical cast의 사용을 위해 boost/lexical_cast 헤더 파일을 포함해야 합니다. 그렇지 않으면 컴파일러가 오류를 발생시킵니다.

구문은 다음과 같습니다.

string st = boost::lexical_cast<string>(val)

여기서 ‘val’은 문자열 형식으로 변환해야 하는 정수 변수 또는 값입니다. lexical_cast 연산자는 피연산자로서 문자열로 변환해야 하는 변수 또는 값 ‘val’을 취합니다. 이 경우 ‘val’의 데이터 형식은 int입니다.

다음 예를 통해 이를 더 잘 이해할 수 있습니다.

// 필수 헤더 파일 포함
#include <iostream>  
#include <boost/lexical_cast.hpp>  // boost 라이브러리의 lexical cast 연산자를 포함
#include <string>

using namespace std;

// 메인 함수
int main()
{
    int var;
    cout << "정수를 입력하세요: ";
    cin >> var;
    string str = boost::lexical_cast<string>(var);  // int를 문자열로 변환하기 위해 lexical_cast 사용
    cout << endl << "입력한 정수의 문자열 값은 :" << str;
    return 0;
}
output

정수를 입력하세요: 1234

입력한 정수의 문자열 값은 :1234

위 코드와 해당되는 출력에서 볼 수 있듯이 boost::lexical_cast는 정수를 성공적으로 문자열로 변환합니다. 이 방법은 문자열을 정수로 변환하는 데도 적용할 수 있습니다. lexical_cast의 꺽쇠 괄호 안의 데이터 형식을 변경해야 합니다. 따라서 문자열을 정수로 변환하려면 다음 구문을 사용해야 합니다.

구문:

int n = boost::lexical_cast<int>(st);

여기서 ‘n’은 변환된 정수 값을 보유하는 정수 변수입니다. ‘st’는 정수로 변환해야 하는 문자열 변수입니다. 는 인수를 정수 형식으로 변환해야 함을 나타냅니다.

동일한 작업을 수행하는 예를 보기 위해 다음 예제를 살펴보십시오.

// 필수 헤더 파일 포함
#include <iostream>  
#include <boost/lexical_cast.hpp>    // boost/lexical_cast 헤더 파일을 포함

using namespace std;

// 메인 함수
int main()
{
    string str;
    cout << "정수로 변환할 문자열을 입력하세요 : ";
    cin >> str;
    int i = boost::lexical_cast<int>(str);    // lexical_cast를 사용하여 문자열을 정수로 변환
    cout << endl << "입력한 문자열의 정수 값은 : " << i;
    return 0;
}
output

정수로 변환할 문자열을 입력하세요 : 1234

입력한 문자열의 정수 값은 : 1234

여기서 ‘1234’라는 문자열이 정수 형식으로 변환되었습니다. 확인을 위해 C++에서 변수 ‘i’의 데이터 형식을 type_id(i).name()을 사용하여 확인할 수 있습니다.

C++에서 int를 string으로 변환하는 이유와 시점

프로그래밍 시나리오에서 정수를 문자열로 취급해야 하는 경우, 위에서 설명한 세 가지 방법을 사용하여 명시적으로 문자열로 변환합니다. 때로는 산술 연산을 수행하는 것이 까다로울 수 있으며 문자열 연산을 대신 사용하는 것이 도움이 될 수 있습니다. 정수 변수나 값

에 대한 문자열 연산을 사용하려면 먼저 문자열로 변환해야 합니다. 예를 들어 현재 날짜를 출력하는 프로그램을 작성해야 한다고 가정해보십시오. 날짜를 dd/mm/yy 형식으로 표시하는 작업은 산술 연산 대신 문자열 연산을 사용하려고 할 것입니다. 이러한 두 가지 관점에서 동일한 시나리오를 살펴보겠습니다.

// 문자열 사용

#include <iostream>
#include <string.h>

using namespace std;

int main()
{
    string yr = "2023";    // 'yr'을 문자열로 선언
    cout << "오늘 날짜는: " << yr.substr(2) << "/10/06" <<endl;
    return 0;
}

1행에서 ‘yr’을 문자열로 선언하고, substr(2) 함수를 사용하여 문자열 ‘yr’의 마지막 두 문자를 추출하여 dd/mm/yy 형식과 일치하도록 합니다. 이제 동일한 작업을 산술 연산을 사용하여 수행하는 방법을 살펴보겠습니다.

// 정수 사용

#include <iostream>

using namespace std;

int main()
{
    // 두 개의 정수 변수 선언
    int yr;     // 현재 년도를 저장하는 변수
    int format_yr;    // 형식화된 년도를 저장하는 변수
    yr = 2023;
    format_yr = yr - 2000;
    cout << "오늘 날짜는: " << format_yr << "/10/06" << endl;
    return 0;
}
output

오늘 날짜는: 23/10/06

우리는 ‘yr’을 문자열로 처리하든 정수로 처리하든 출력에서 차이가 없음을 알 수 있습니다. 그러나 후자는 원하는 형식의 날짜를 얻으려면 추가로 한 줄의 코드를 작성해야 한다는 점을 고려하면서 이 두 가지를 비교해 보세요. 이것은 문자열 대신 정수로 ‘yr’을 다루더라도 코드에 큰 차이를 만들지 않습니다. 그러나 많은 산술 연산을 대신하여 단일하고 더 쉬운 문자열 연산 또는 함수를 사용할 수 있는 상황에서는 정수를 문자열로 변환하는 것이 더 나을 수 있습니다. 따라서 위의 예에서처럼 정수로 선언한 ‘yr’을 문자열로 변환하여 원하는 형식을 얻을 수 있습니다.

결론

이제 C++에서 int를 string으로 변환하는 방법을 잘 이해하게 되었습니다. int를 string으로 변환하는 C++의 세 가지 방법을 수행할 수 있습니다 – to_string() 메서드, stringstream 클래스 및 boost::lexical_cast()입니다. 각 방법의 구문과 구현에 대한 이해와 예제를 살펴보았습니다. 이러한 방법 중 몇 가지는 다른 데이터 형식 변환에도 유용합니다. 예를 들어 stringstream 클래스는 문자열을 부동 소수점으로 변환하는 데도 사용할 수 있습니다.

Leave a Comment