string을 int로 바꾸려면


C++에서 string(char*)int로 바꾸려면 어떻게 하나요? 스트링이 숫자가 아닌 경우는 0(false)을 return 하는 게 아니라 적당히 에러를 내주고 싶습니다.

  • 2016년 01월 24일에 작성됨

조회수 523


1 답변


좋아요
0
싫어요
채택취소하기

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
}
  • 2016년 01월 24일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close