👉to_string()
: int
-> string
으로 변환한다!
#include<string>
int num=10;
string str=to_string(num);
cout<<str;
10
이 출력되지만 int
자료형이 아닌 string
자료형이다!
<string>
👉stoi()
: string
-> int
으로 변환한다!
#include<string>
string str="123456789:;
stoi(str);
<string>
👉atoi()
: char형 문자열
-> int
으로 변환한다!
#include<string>
char ch[20]="123456789";
atoi(ch) //char형 문자열의 경우 c_str()이 필요없다.
🛑 atoi() 함수는 본래 char형 문자열 -> int 로 바꿔주는 함수이다. 따라서 string을 바꿀 경우 .c_str() 함수가 같이 필요한 것이다.
👉atoi(str 타입 변수.c_str())
: string
-> int
으로 변환한다!
#include<string>
string str="123";
int num=atoi(str.c_str());
cout<<num<<"\n";
123
이 int
자료형으로 출력된다!
atoi()
함수는 헤더 #include<stdlib.h>
를 사용해야한다.: C style의 문자열을 입력받아서 int 타입으로 변환해 리턴
<stdlib.h>
<string>
: 반환형이 char* 이므로, 해당하는 string의 첫번째 문자의 주소값(포인터)를 반환
atoi(str)
만 하면 안돼! 그래서 atoi(str.c_str())
로 해줘야해문자를 정수로 변환하려면, 0의 아스키코드 값을 빼주면 된다.
int num = str[0] - '0'; //str[0]의 문자 '0'을 정수 0으로 변환
int num = str[1] - '0'; //str[1]의 문자 '3'을 정수 3으로 변환
+) 뭣도 모르고 그냥 형변환하면 int num=(int)str[0]
0의 아스키 코드값 = 48이 출력됩니다~ 경험담
반대로 int 형 값에 0의 아스키코드 값(48)을 더해주면 char 형이 된다.
char ch = 0 + '0' //정수 0이 문자 '0'으로 변환
char ch = 3 + '0' //정수 3이 문자 '3'으로 변환
#include<typeinfo>
int num=10;
cout<<typeid(num).name();
❔왜 제대로 안떠❓
int
가 i
로, char
가 c
로 출력되는 이상한..
=> gcc 컴파일러를 사용한 VSCODE는 컴파일 과정에서 int를 i로 바꿔 그대로 출력하는 오류가 있어 gcc 컴파일러에서 typeid를 사용하는 건 안전하지 않다!