Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++에서 문자열을 int(정수)로 변환하는 방법 총정리

C++에서 문자열을 정수(int)로 변환하는 방법은 크게 두 가지가 있습니다. 하나는 문자열 스트림(stringstream)을 활용하는 방법이고, 다른 하나는 C++11부터 도입된 stoi() 계열 변환 함수를 사용하는 방법입니다. 각 방법의 특징과 예제 코드를 살펴보겠습니다.

1. stringstream을 이용한 변환

stringstream은 문자열을 입력 스트림처럼 다룰 수 있게 해주는 클래스입니다. 문자열에서 숫자를 추출할 때 유용하며, 변환 실패 여부를 확인하는 에러 검사 로직을 함께 작성하면 더욱 안전하게 사용할 수 있습니다.

예제 코드

#include<iostream>
#include<sstream>
using namespace std;

int str_to_int(const string &str) {
    stringstream ss(str);
    int num;
    ss >> num;
    return num;
}

int main() {
    string s = "12345";
    int x = str_to_int(s);
    cout << x;
}

출력 결과

12345

2. C++11의 stoi() 계열 함수 활용

C++11부터는 문자열을 숫자 타입으로 변환하는 전용 함수들이 표준 라이브러리에 추가되어, 별도의 스트림 객체 없이 한 줄로 간편하게 변환할 수 있습니다.

  • stoi() : string → int
  • stol() : string → long
  • stoll() : string → long long
  • stoul() : string → unsigned long

예제 코드

이 함수들은 아래와 같이 간단하게 사용할 수 있습니다.

#include<iostream>
using namespace std;

int main() {
    string s = "12345";
    int x = stoi(s);
    cout << x;
}

출력 결과

12345

참고: stoi()의 추가 기능과 예외 처리

stoi() 함수는 stoi(문자열, 시작 위치 포인터, 진수) 형태로 호출할 수 있으며, 세 번째 인자를 통해 2진수, 16진수 등 다양한 진법의 문자열도 변환할 수 있습니다. 또한 변환에 실패하면 invalid_argument 예외가, 값이 범위를 초과하면 out_of_range 예외가 발생하므로, 필요에 따라 try-catch 문으로 예외 처리를 해주는 것이 좋습니다.