C++에서는 문자열(string)을 숫자형으로 변환할 때 std::sto* 계열 함수를 사용한다.

  • std::sto* : string을 숫자로 바꾸는 함수 묶음(패밀리)
  • 쪼개서 보자면,
    • std:: ⇒ C++ 표준 라이브러리 소속
    • sto ⇒ string to (문자열 -> ~로 변환)
    • * ⇒ 여러 종류가 있다는 의미

입력값이 문자열로 들어오는 경우 사용하는 기능이다.


 

1. 기본 개념

문자열을 숫자로 변환하는 대표 함수는 아래 4가지다.

함수 의미 환 타입
stoi string → int int
stof string →float float
stol string → long long
stod string → double double

 

 

2. 사용방법

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

int main() {
    string s1 = "100";
    string s2 = "3.14";

    int a = stoi(s1);
    float b = stof(s2);
    long c = stol(s1);
    double d = stod(s2);

    cout << a << endl; // 100
    cout << b << endl; // 3.14
    cout << c << endl; // 100
    cout << d << endl; // 3.14

    return 0;
}

 

 

3. 주의사항 (실무 중요)

  • 숫자가 아닌 문자열이면 에러 발생
    string s ="abc";
    int a =stoi(s); // x 런타임 에러 발생
  • 발생 예외
    • invalid_argument : 숫자로 변환 불가능
    • out_of_range : 범위를 초과한 값

 

4. 문자열 일부만 숫자여도 변환 가능

string s = "123abc";
int num = stoi(s);

cout << num; // 123 출력

* 숫자 부분까지만 읽고 변환됨

 

 

5. 최종 요약

std::sto* 계열 함수는 문자열을 숫자로 변환할 때 사용한다.

  • stoi : 문자열 → int
  • stof : 문자열 → float
  • stol : 문자열 → long
  • stod : 문자열 → double

단, 숫자로 바꿀 수 없는 문자열은 에러가 발생할 수 있으므로 주의해야 한다.

 

추후 해당 포스팅과 관련된 stringstream, 형변환에 대해서도 다루도록 하겠습니다.

+ Recent posts