1. stoi() 메소드 이용하기 (string -> 모든 숫자형 가능)
stoi() 메소드는 간단하게 string을 int로 바꿀 수 있는 함수이다. (string to int 에서 앞 문자를 따와서 stoi라고 부른다.)
stoi(string변수명) 이라고 써주면 된다. stoi() 함수를 사용하려면 <string> 헤더파일을 include 시켜줘야 한다.
-> C언어에서 사용하는 #include <string.h>가 아닌 #include <string>을 사용하므로 혼동하지 않도록 주의하자
int 뿐만 아니라 long, double, float 등도 변환이 가능하다. (값 손실이 있을 수 있으니 주의하자)
int로 변환 | stoi(); |
long으로 변환 | stol(); |
double로 변환 | stod(); |
float로 변환 | stof(); |
#include <iostream>
#include <string>
using namespace std;
int main() {
string s = "12345";
string sd = "12345.678";
//cout << s + 1; //string에 숫자 연산을 했기 때문에 컴파일 오류!
int s_num = stoi(s);
long l_num = stol(s);
double d_num = stod(sd);
float f_num = stof(sd);
cout << s_num + 1 << endl; //string형이 정상적으로 int형으로 변환되어 문제없이 컴파일된다.
cout << l_num + 1 << endl;
cout << d_num + 1 << endl;
cout << f_num + 1 << endl;
}
2. stringstream 클래스 이용하기
stringstream 클래스를 이용하면 string을 int로 변환할 수 있다.
#include <iostream>
#include <sstream>
using namespace std;
int main() {
string str = "12345";
stringstream ss;
ss << str;
int i_num;
ss >> i_num;
cout << "string : " << str << endl;
cout << "int : " << i_num + 1; //string형이 정상적으로 int형으로 변환되어 문제없이 컴파일된다.
}
3. boost::lexical_cast 이용하기
boost::lexical_cast<int>(string변수명) 이라고 써주면 된다. int 뿐 아니라 long, double, float로도 변환이 가능한 방법이다.(값 손실은 있을 수 있으니 주의하자.) <boost/lexical_cast.hpp> 헤더파일을 include 시켜줘야 한다.
-> 비주얼 스튜디오의 버전에 따라서 <boost/lexical_cast.hpp> 헤더파일이 include가 안될 수도 있으니 참고하자. 구 버전의 C++에서 쓰던 방법이므로, 만약 include가 안된다면 헤더파일을 따로 추가하거나, 다른 방법을 써야 한다. (Visual Studio 2022 버전으로는 오류가 났다.)
#include <iostream>
#include <string>
#include <boost/lexical_cast.hpp>
using namespace std;
int main(){
string is = "12345";
int i_num = boost::lexical_cast<int>(is); //string is를 int형으로 변환하여 i_num에 저장
cout << i_num + 1 << endl;
}
'C++' 카테고리의 다른 글
[C++] - 덱(deque) 사용법 정리 (STL) (1) | 2024.01.16 |
---|---|
[C++] - int → string 으로 형변환하기 (1) | 2024.01.10 |
[C++] - vector를 2차원으로 사용하기 (STL) (1) | 2024.01.08 |
[C++] - vector 사용법 정리 (STL) (1) | 2024.01.06 |
[C++] - sort()함수 사용법 정리(STL) (1) | 2024.01.02 |