string을 int로 바꾸려면

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

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
    }
    

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.