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, 형변환에 대해서도 다루도록 하겠습니다.
'언어 문법정리 > c++' 카테고리의 다른 글
| [C++] max() 함수란? (0) | 2026.05.08 |
|---|---|
| [C++] unique 함수란? (중복제거) (0) | 2026.05.06 |
| [C++] 문자형태의 '숫자' -> 정수 숫자로 바꾸기 (’7’ → 7) (0) | 2026.05.02 |
| [C++] sort() 함수 정리 (0) | 2026.05.01 |
| [C++] endl과 \n 차이점 (feat.백준 274) (0) | 2026.04.30 |
