2012-08-26 4 views
6

문자열의 n 번째 문자를 숫자로 변환하려면 어떻게해야합니까? 나는 긴 숫자를 문자열로 표현하고 배열을 만들고 싶습니다. 각 문자는 개별 숫자입니다. 다음 코드를 시도해 보았습니다.문자열의 n 번째 문자를

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

int main() 
{ 
    string str ="73167176531330624919225119674426574742355349194934969835203127745063262395783180169848018"; 
    int ints[1000] = {0}; 

    for (int i = 0; i < str.size(); i++) 
    { 
     istringstream ss(str[i]); 
     ss >> ints[i]; 
    } 

    cout << ints[9] << endl; 

    return 0; 
} 

하지만 작동하지 않습니다.

답변

9

에 대해 어떻게 : 어쩌면

for (int i = 0; i < str.size(); i++) 
    if (isdigit(str[i])) 
     ints[i] = str[i] - '0'; 

또는 :

for (string::const_iterator it = str.begin(); 
    it != str.end(); it++) 
     if (isdigit(*it)) 
      ints[i] = *it - '0'; 
+1

입니다. 고맙습니다. "- '0'"이하는 일을 설명해 주시겠습니까? – user1626154

+3

'1'은 49이지만 '1'- '0'은 간단한 수학 빼기이고 'ASCII'(http://www.asciitable.com/index/asciifull.gif)에서는 '0' 49 - 48'로 표시되며 결과는 1입니다. 다른 모든 숫자에도 동일하게 적용됩니다. – jweyrich

+0

@ user1626154 숫자의 ASCII 표현을 10 진수 표현식으로 변환합니다. '0'은 십진수에서 48이므로 '0'을 빼면 십진수 값 0이 나오며 다른 자릿수도 계속 이어집니다. – DaV

0

이 시도 : 네,이

char a[2]; 
a[1] = '\0'; 
for (size_t i = 0; i < str.size(); i++) { 
    a[0] = str[i]; 
    ints[i] = atoi(a); 
} 
+0

atoi 대신 표준 함수 사용 – Nahiyan

관련 문제