Programming/C++
[C/C++] 문자열을 정수로 변환하기 : atoi
감성적인 개발자
2021. 8. 14. 23:58
■ 헤더파일
#include<stdlib.h>
■ atoi 함수 원형
int atoi(const char* string);
▶예제
#include <iostream>
#include <stdlib.h>
using namespace std;
int main(){
int sum = 0;
char s[] = "300";
char s1[] = "+300";
char s2[] = "-300";
sum += atoi(s);
cout << s << " converted to " << atoi(s) << endl;
cout << "sum : " << sum << '\n';
sum += atoi(s1);
cout << s1 << " converted to " << atoi(s1) << endl;
cout << "sum : " << sum << '\n';
sum += atoi(s2);
cout << s2 << " converted to " << atoi(s2) << endl;
cout << "sum : " << sum << '\n';
}
문자형식인 s, s1, s2를 atoi를 통해 정수로 변환한 후 연산한다.
▶실행
▶예제
int main(){
int sum = 0;
char s[] = "0300";
char s1[] = "number-300";
char s2[] = "300number";
sum += atoi(s);
cout << s << " converted to " << atoi(s) << endl;
cout << "sum : " << sum << '\n';
sum += atoi(s1);
cout << s1 << " converted to " << atoi(s1) << endl;
cout << "sum : " << sum << '\n';
sum += atoi(s2);
cout << s2 << " converted to " << atoi(s2) << endl;
cout << "sum : " << sum << '\n';
}
왼쪽에 0이 있는 경우, 문자 + 부호 + 숫자, 숫자 + 문자인 경우 변환한 결과이다.
atoi로 변환이 안될 경우 0을 리턴한다.
▶실행
※ 정리
문자열 | atoi() 결과 |
"300" | 300 |
"0300" | 300 |
"+300" | 300 |
"-300" | -300 |
"number-300" "number+300" |
0 |
"300number" "300number400" |
300 |
숫자 : 정상적으로 변환
부호 + 숫자 : 정상적으로 변환
문자 : 모두 버려진다. ( 0 )
문자 + 숫자 : 모두 버려진다 ( 0 )
숫자 + 문자 : 문자가 나오기 전 앞부분 숫자만 변환
숫자 + 문자 + 숫자 : 뒤에 나온 숫자도 같이 버려진다.