C와 C++에서 char 타입을 int로 변환해야 하는 경우는 크게 두 가지입니다. 숫자로 된 문자열("12345")을 실제 정숫값으로 바꾸는 것과, 단일 문자('s')를 해당 아스키(ASCII) 코드 값으로 바꾸는 것입니다. 각 상황에 맞는 변환 방법을 예제와 함께 살펴보겠습니다.
C 언어에서 char를 int로 변환하는 3가지 방법
C 언어에서는 다음 세 가지 방법을 사용할 수 있습니다.
- sscanf() – 형식 지정자를 이용해 문자열에서 정수를 추출합니다.
- atoi() – 숫자로 구성된 문자열을 정수로 변환합니다(ASCII to Integer).
- 타입 캐스팅(Typecasting) – 단일 문자를 해당 아스키 코드 값으로 변환합니다.
다음은 세 가지 방법을 모두 활용한 예제입니다.
예제
#include<stdio.h>
#include<stdlib.h>
int main() {
const char *str = "12345";
char c = 's';
int x, y, z;
sscanf(str, "%d", &x); // sscanf() 사용
printf("\nThe value of x : %d", x);
y = atoi(str); // atoi() 사용
printf("\nThe value of y : %d", y);
z = (int)(c); // 타입 캐스팅 사용
printf("\nThe value of z : %d", z);
return 0;
}
실행 결과
The value of x : 12345 The value of y : 12345 The value of z : 115
문자 's'의 아스키 코드 값이 115이므로 타입 캐스팅 결과로 115가 출력됩니다. 즉, sscanf()와 atoi()는 숫자 문자열을 실제 정숫값으로 변환하는 반면, 타입 캐스팅은 문자 자체를 코드 값으로 바꾼다는 점을 반드시 구분해서 이해해야 합니다.
C++에서 char를 int로 변환하는 2가지 방법
C++에서는 다음 두 가지 방법을 사용할 수 있습니다.
- stoi() – 문자열(std::string 또는 문자 배열)을 int로 변환합니다(string to int).
- 타입 캐스팅(Typecasting) – 단일 문자를 아스키 코드 값으로 변환합니다.
예제
#include <iostream>
#include <string>
using namespace std;
int main() {
char s1[] = "45";
char c = 's';
int x = stoi(s1); // stoi() 사용
cout << "The value of x : " << x;
int y = (int)(c); // 타입 캐스팅 사용
cout << "\nThe value of y : " << y;
return 0;
}
실행 결과
The value of x : 45 The value of y : 115
핵심 정리
- 숫자 형태의 문자열을 정수로 변환할 때는 C에서
atoi(),sscanf(), C++에서stoi()를 사용합니다. - 단일 문자를 타입 캐스팅하면 아스키 코드 값이 반환됩니다. 예를 들어 's'는 115가 됩니다.
- 참고로, 문자 '5'처럼 한 글자 숫자를 실제 숫자 5로 바꾸려면
c - '0'처럼 '0'의 코드 값을 빼주는 방식도 널리 사용됩니다.