1. 핵심 개념
C++에서 숫자처럼 보이는 문자와 실제 정수 숫자는 서로 다른 개념이다. 예를 들어 '7'은 문자이고, 7은 정수이다. 화면에 보이는 모양은 같지만 컴퓨터 내부에서는 다르게 처리된다. 문자 '7'은 char 자료형이고, 정수 7은 int 자료형이다.
char c = '7';
int n = 7;
2. 문자 하나를 숫자를 정수로 바꾸는 방법
int num = c-'0';
예시:
char c ='7';
int num = c-'0';
cout << num; // 7
여기서 핵심은 '0'을 빼는 것이다.
C++에서 문자는 내부적으로 문자 코드값을 가진다. 대표적으로 ASCII 코드에서 문자 '0'은 48, 문자 '1'은 49, 문자 '2'는 50, 문자 '7'은 55라는 값을 가진다. 그래서 문자 '7'을 정수 7로 바꾸고 싶을 때는 문자 '0'을 빼주면 된다.
'7'-'0'
55-48
7 // 숫자
3. 사용예시
- 문자열에서 하나씩 꺼내기
string s = "12345"; for (int i = 0; i < s.length(); i++) { int num = s[i] - '0'; cout << num << " "; // 출력: 12345 }
s[i]는 문자다.
s[0] == '1' s[1] == '2'
그래서 정수로 쓰려면
을 사용한다s[i]-'0'
4. 문자열 -> 정수
문자 하나가 아니라 문자열 전체를 정수로 바꾸고 싶다면 stoi()를 사용한다.
string s ="12345";
int num = stoi(s);
cout << num; // 12345
(참고) 문자열 -> 숫자 변환 함수 정리 (stoi, stof, stol, stod)
5. 최종정리
정리하면, s[i] - '0'은 문자열 안에 들어 있는 숫자 문자 하나를 정수 숫자로 바꾸는 코드이다. 코딩테스트에서는 숫자를 문자열로 변환한 뒤 각 자리수를 하나씩 다룰 때 매우 자주 사용된다.
'언어 문법정리 > c++' 카테고리의 다른 글
| [C++] unique 함수란? (중복제거) (0) | 2026.05.06 |
|---|---|
| [C++] 문자열 -> 숫자 변환 함수 정리 (stoi, stof, stol, stod) (1) | 2026.05.02 |
| [C++] sort() 함수 정리 (0) | 2026.05.01 |
| [C++] endl과 \n 차이점 (feat.백준 274) (0) | 2026.04.30 |
| [C++] erase() 함수 정 및 사용법 (0) | 2026.04.27 |
