본문 바로가기

게임프로그래밍/C++

[C++] 숫자로 이루어진 문자열 각 자릿수들의 합 구하기

일정 길이의 문자열이 숫자로만 이루어져 있을 때 이 숫자들의 합을 구하는 방법이다.

 

컴퓨터에서 문자는 전부 아스키 코드로 저장이 되고 이 아스키 코드의 값을 알면 문자를 숫자로 바꿀 수 있다.

문자 '0'의 경우 아스키 코드로 48이고, 문자 '1'의 경우 아스키 코드로 49이다.

 

문자 '1'을 숫자 1로 바꾸기 위해서는 문자 숫자에서  문자'0'을 빼면 된다.

 

char c = '1';
int i = c - '0';

 

이렇게 하면 i에는 1의 값이 들어간다. (문자열 '1'은 아스키 코드로 49이고 문자열 '0'은 아스키 코드로 48이기 때문에 계산을 하면 1이 된다)

 

문자열의 각 자릿수를 더하는 방법은 위의 방법을 응용하면 된다.

 

#include <iostream>
#include <string>

int main() {

    int sum = 0;
    std::string str;
    std::cin >> str;

    for (int i = 0; i < str.length(); ++i)
    {
        sum += str[i] - '0';
    }

    std::cout << sum;

}

 

이렇게 하면 문자열의 각 자릿수마다 더하는 것이 가능해진다.