C++ 숫자 각 자릿수 구하기, 문자열 숫자 각 자릿수 구하기

Notepad96

·

2020. 11. 21. 06:22

300x250

 

 

 


1. 숫자 각 자릿수 구하기 

숫자의 각 자릿수를 구하기 위해서는 나누기와 나머지 연산을 사용하여서 가능하다.

 

 

또한, 숫자를 문자열로 형변환함으로써 인덱스를 사용하여 각각의 자리의 해당하는 숫자에 접근할 수 있다.

 

 

 

 

단, 숫자형 문자열에서 각 문자에 접근하여 int형으로 저장한다면 아스키 코드상에 10진수를 얻게 된다.

 

따라서 올바른 숫자를 얻기 위해서 추가적인 작업을 해주어야 한다.

 

 

 

 


2. 코 드

환경 : Visual studio 2019

#include <iostream>
#include <vector>
#include <string>
using namespace std;

int main() {
    int a = 1234567;

    while (a) {
        cout << a % 10 << " ";
        a /= 10;
    }
    cout << "\n===========================\n";



    a = 1234567;
    string s = to_string(a);
    vector<int> v, v2;
    
    for (char c : s) {
        cout << c << " ";
        v.push_back(c);
    }
    cout << "\n===========================\n";



    cout << "vector1 : ";
    for (int i = 0; i < v.size(); i++) {
        cout << v[i] << " ";
        v2.push_back(s[i] - '0');
    }
    cout << "\n===========================\n";
    


    cout << "vector2 : ";
    for (int i : v2) {
        cout << i << " ";
    }
    cout << "\n===========================\n";


    return 0;
}
 
결과
 
 
 
 
- 나누기와 나머지 연산을 사용하여서 while 루프를 돌면서 일의 자리수부터 각 자릿수를 구할 수 있다.
 
 
 
 
 
 
- 숫자를 문자열로 형변환함으로써 인덱스로 간단하게 각 자릿수의 문자에 접근할 수 있다.
 

 

 

- 문자열의 문자들은 char형으로서 이를 int형의 vector의 저장하고자 한다면 0~9에 해당하는 10진수 아스키 코드(48~57)가 저장된다.

 

 

따라서 올바른 숫자를 읽고자 한다면 '0'(48)를 빼줌으로서 0~9에 해당하는 숫자를 얻을 수 있다.

 

 

 

 

 

300x250