busyhuman   8년 전

int integer;
string a, b;

cin >> a >> b;

integer = stoi(a); // Ok
integer = stoi(a[0]); // Fail

단순하게 직관적으로 저렇게 하면 될 것 같아 시도해봤는데 안되서 질문드립니다.

스트링 배열에 있는 값 하나씩 정수형으로 바꾸고 싶은데 어떻게 해야하나요?




ssapo   8년 전

int integer;
string a,b;
cin >> a >> b;

for(int i =0; a.length(); ++i)

integer = a[i] - '0';


하면 하나씩 받아올수 있지 않을까 생각합니다

hihihi   8년 전

stoi 함수는 파라메터의 주소부터 NULL 까지를 스트링으로 판단하고 바꿔주는 것 같은데, 굳이 직관적인 방식을 쓰자면

char t = a[1];

a[1] = 0;

integer = stoi(&a[0]);

a[1] = t;

t = a[2];

a[2] = 0;

integer = stoi(&a[1]);

a[2] = t;

...

하면 될 듯 하네요

busyhuman   8년 전

@ssapo -'0'이 무슨뜻인가요?

ssapo   8년 전

@busyhuman
아스키 계산인데여 char인 '0' 가 int인 0과 값이 다릅니다.
char '1'과 int 1이 값은 다르지만 char '0'과 '1' 이 int값으로 연속적인 값을 가지기 때문에

'1' - '0' 예를 들어 이 연산의 값은 int인 1이 됩니다.


busyhuman   8년 전

@ssapo

char '0'과 '1'이 int 값으로 연속적인 값을 가진다는게

012345.... 의 연속할때 연속인지 다른 의미인지 잘 이해가 안됩니다.

ssapo   8년 전

ae0514525c8a8ca16e6c5f9fe6874547.png


'0'~ '9'를 int로 출력하면 이렇습니다.

그러니 '0' 을 빼면 그 차가 실제 숫자를 뜻하게 될껍니다

busyhuman   8년 전

@ssapo 감사합니다.

댓글을 작성하려면 로그인해야 합니다.