반응형
std::stoi는 문자열을 정수(int)로 변환하는 기능을 한다. C 언어의 atoi와 비슷하지만 에러 처리와 세부 제어가 가능하다는 점에서 훨씬 안전하다.
int stoi(const std::string& str, size_t* pos = 0, int base = 10);
매개변수
- str : 변환할 문자열
- pos : 변환이 끝난 위치를 알려주는 포인터 (옵션)
- base : 진법 (2 ~ 36, 기본값 10)
반환값
- 변환된 int 값
예외
- std::invalid_argument : 변환할 수 없는 경우 (숫자가 전혀 없음)
- std::out_of_range : 변환 결과가 int 범위를 넘어가는 경우
예시
#include <iostream>
#include <string>
using namespace std;
int main() {
string s1 = "12345";
string s2 = "-42";
string s3 = "1010";
int n1 = stoi(s1); // 12345
int n2 = stoi(s2); // -42
int n3 = stoi(s3, nullptr, 2); // 2진수로 해석 → 10
cout << n1 << ", " << n2 << ", " << n3 << endl; // 12345, -42, 10
}
pos 활용 (문자열 중간까지 변환)
string s = "123abc";
size_t idx;
int num = stoi(s, &idx);
cout << num << endl; // 123
cout << idx << endl; // 3 ("123" 이후 문자가 시작되는 위치)
예외 처리
try {
int a = stoi("abc"); // 숫자 없음 → invalid_argument
} catch (const invalid_argument& e) {
cout << "invalid_argument: " << e.what() << endl;
}
try {
int b = stoi("9999999999999999999999"); // 너무 큼 → out_of_range
} catch (const out_of_range& e) {
cout << "out_of_range: " << e.what() << endl;
}
여러 타입 변환 함수
- stoi → int
- stol → long
- stoll → long long
- stoul → unsigned long
- stoull→ unsigned long long
- stof → float
- stod → double
- stold → long double
반응형
'프로그래밍 언어 > C++' 카테고리의 다른 글
| C++ 문자열 -> 숫자 변환 atoi vs stoi vs from_chars (1) | 2025.10.01 |
|---|---|
| C++ 문자열 -> 정수 변환 stoi vs atoi (0) | 2025.09.30 |
| C++ 숫자 / 알파벳 / 공백 / 특수문자 판별 함수 정리 (isalpha, isdigit, isalnum, isspace, ispunct) (0) | 2025.09.30 |
| C++ 문자 대소문자 판별 & 변환 함수 정리 (isupper, islower, toupper, tolower) (0) | 2025.09.30 |
| C++ string::npos (-1) find함수의 반환값 (0) | 2025.09.29 |
댓글