C++에서 단일 문자를 int(정수)로 변환하는 것은 ASCII 코드의 특성을 활용하면 매우 간단하게 처리할 수 있습니다. 다음은 문자 하나를 int로 변환하는 기본 예제입니다.
예제
#include <iostream>
using namespace std;
int main() {
char c = '8';
int i = c - 48;
cout << i;
i = c - '0';
cout << "\t" << i;
return 0;
}
출력 결과
8 8
코드 설명
위 프로그램에서는 문자형 변수 c에 문자 '8'을 초기화한 뒤, 아래와 같은 방식으로 이 문자를 정수 값으로 변환합니다.
char c = '8'; int i = c - 48; cout << i; i = c - '0'; cout << "\t" << i;
변환 원리
ASCII 코드에서 숫자 문자 '0'부터 '9'는 각각 48부터 57까지 연속된 정수 값으로 배치되어 있습니다. 따라서 숫자 문자에서 '0', 즉 48을 빼주면 해당 문자가 실제로 나타내는 숫자 값을 얻을 수 있습니다.
예를 들어 문자 '8'의 ASCII 값은 56이므로 56 - 48 = 8이 되어, 결과적으로 정수 8이 출력됩니다. c - 48과 c - '0'은 완전히 동일한 연산이지만, 문자 리터럴 '0'을 사용하는 편이 코드의 의도를 명확하게 드러내므로 가독성 면에서 더 권장됩니다.
다만 이 방식은 단일 문자 변환에만 적용됩니다. 여러 자리로 이루어진 숫자 문자열 전체를 정수로 변환하려면 stoi()나 atoi() 같은 표준 라이브러리 함수를 사용해야 한다는 점을 참고하세요.