string을 int로 바꾸려면
조회수 25963회
C++에서 string(char*)
을 int
로 바꾸려면 어떻게 하나요?
스트링이 숫자가 아닌 경우는 0(false)을 return 하는 게 아니라 적당히 에러를 내주고 싶습니다.
1 답변
-
1. C++11 내장 함수 사용
C++11은 stoi, stol, stoll, stoul 등 다양한 함수를 제공합니다.
int myNr = std::stoi(myString);
와 같이 쓰고, 변환할 수 없는 경우 예외를 throw 합니다.다만, 이 함수는 스트링 "11x"를 전달하면 정수 11을 return 하므로 이게 아니면 다른 코드를 써 주세요
2. sscanf() 사용
const char* str = "123"; int i; if(sscanf(str, "%d", &i) == EOF ) { /* 에러 */ }
3. C++ 표준 라이브러리 stringstream 사용
int str2int (const string &str) { stringstream ss(str); int num; if((ss >> num).fail()) { /* 에러 */ } return num; }
4. boost library 사용
#include <boost/lexical_cast.hpp> #include <string> try { std::string str = "123"; int number = boost::lexical_cast< int >( str ); } catch( const boost::bad_lexical_cast & ) { // Error }
댓글 입력