본문 바로가기
C++/기초 및 알고리즘 함수

[c++] 문자열 형변환 atoi, stoi, c_str, isdigit

by tokkiC 2022. 6. 16.

"이런" rvalue 상태인 문자열를 숫자로 atoi()          'a' to int 

문자열을 문자로 c_str()    str()을 char로

문자열을 숫자로  stoi()     string to int 

숫자인지 확인 isdigit()     true / false 리턴

 

atoi() 와 c_str(), stoi() :  모두 데이터의 형변환에 쓰인다

                       변환 전 후, 우리가 인식하는 데이터의 값은 같다. 물론 컴퓨터나 프로그램에는 중요하고 필요한 차이다

 

atoi() : char형을 인자로 받아 int형으로 바꿔준다. 숫자가 아닌 문자나 다른 것일 경우, 변환에 실패하고, 0을 리턴한다. 정상작동 결과인 숫자 0인지 실패 결과인 boolean 값 0인지를 구분하기 위해서 isdigit을 사용하여 숫자여부를 판별가능하다

stoi() : 문자열을 숫자로 바꿔준다. 사용법은 atoi 와 같다

atof -float형, atod -double형, atol -long long형 등 i대신 자료형에 맞게 바꿀수있다. stoi도 마찬가지!

c_str() : 문자열을 string 타입에서 char 배열 로 바꾸어 string 타입에서 작동하지 않는 char 배열에서만 쓸 수 있는 함수들을 사용가능하게 한다. atoi 같은 경우 char이어야 사용가능하지 string 으로는 불가하므로 문자열을 atoi로 비교하려면 c_str 을 사용해줘야 한다

문자열.c_str()  : 인자로 받은 문자열을 char 형의 배열로 바꿔준다. string 자료형이 쓰지 못하는 char 만이 쓸 수 있는 함수들을 사용하기 위해서 쓰인다. c_str으로 문자열을 문자로 바꾸고, atoi로 다시 숫자로 바꿀수도 있다. 하지만 이 과정은 stoi를 쓰면 한번에 해결된다.

isdigit() : 0부터 9까지의 숫자형인지를 확인하는 함수. 이거 십진수인가요? 라고 묻는 이름처럼 true와 false가 리턴된다. atoi 와 stoi에서 0이 리턴 될 경우 0이 숫자 0인지 boolean값의 false를 뜻하는 0인지를 판단하기 위해서도 쓰인다.

댓글