Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++로 직접 구현하는 atoi() 함수 완벽 가이드

C 언어의 atoi() 함수는 문자열을 정수로 변환하는 표준 라이브러리 함수입니다. 이 함수는 문자열을 입력으로 받아 그에 해당하는 값을 정수(int) 타입으로 반환합니다.

문법(Syntax)

int atoi(const char *string)

매개변수 − atoi() 함수는 정수로 변환할 문자열 하나를 입력으로 받습니다.

반환 값 − 함수는 정수 값을 반환합니다. 유효한 숫자 문자열이라면 해당하는 정수 값을 반환하며, 유효하지 않은 경우 0을 반환합니다.

atoi() 함수의 구현 원리

직접 구현할 때의 핵심 로직은 다음과 같습니다.

  • 문자열의 각 문자를 하나씩 읽으면서, 이전 결과값에 10을 곱한 뒤 현재 문자의 숫자 값을 더하여 정수를 만듭니다.
  • 음수 처리를 위해 문자열의 첫 번째 문자가 '-'인지 검사하고, 음수라면 최종 결과에 -1을 곱합니다.
  • 각 문자가 '0'부터 '9' 사이에 있는지 확인하여 유효한 숫자 문자열인지 검증합니다.

이제 위 해결 방식을 구현한 프로그램을 살펴보겠습니다.

예제 코드

#include <iostream>
using namespace std;
bool isNumericChar(char x) {
   return (x >= '0' && x <= '9') ? true : false;
}
int myAtoi(char* str) {
   if (*str == '\0')
      return 0;
   int result = 0;
   int sign = 1;
   int i = 0;
   if (str[0] == '-') {
      sign = -1;
      i++;
   }
   for (; str[i] != '\0'; ++i) {
      if (isNumericChar(str[i]) == false)
         return 0;
      result = result * 10 + str[i] - '0';
   }
   return sign * result;
}
int main() {
   char string[] = "-32491841";
   int intVal = myAtoi(string);
   cout<<"The integer equivalent of the given string is "<<intVal;
   return 0;
}

출력 결과

The integer equivalent of the given string is -32491841