본문 바로가기
C++

문자열 숫자 변환

by oncerun 2023. 6. 24.
반응형

 

 

입력받은 문자열 기반으로 문자형 타입이 숫자의 형식을 가지고 있는지 판별할 필요가 있다.

 

함수 `atoi`는 C++에서 C 언어의 표준 라이브러리 함수로서, 문자열을 정수로 변환하는 역할을 합니다. C++에서 `atoi` 함수를 사용하려면 `<cstdlib>` 헤더 파일을 포함해야 합니다.

`atoi` 함수의 시그니처는 다음과 같습니다:

int atoi(const char* str);



- 반환값: `atoi` 함수는 변환된 정수 값을 반환합니다. 문자열이 유효한 정수로 변환되지 않을 경우 0을 반환합니다.
- 파라미터 종류: `atoi` 함수는 단일 파라미터로 문자열의 포인터(`const char*`)를 받습니다. 이 문자열은 정수로 변환될 수 있는 형태여야 합니다.

주의할 점은 `atoi` 함수는 변환할 수 없는 문자열이 주어지면 0을 반환하기 때문에, 오류 처리를 위해 다른 방법을 사용해야 할 수도 있습니다. C++에서는 `std::stoi`나 `std::stringstream`과 같은 대안을 사용하여 문자열을 안전하게 정수로 변환하는 것이 좋습니다.

예를 들어, `std::stoi`를 사용하여 문자열을 정수로 변환하는 방법은 다음과 같습니다:


#include <iostream>
#include <string>

int main() {
    std::string str = "12345";
    int num = std::stoi(str);
    std::cout << "Converted integer: " << num << std::endl;
    return 0;
}



위의 예제에서는 `std::stoi` 함수를 사용하여 `str` 문자열을 정수로 변환하고, 변환된 값을 `num` 변수에 저장하였습니다.

 

`std::stoi` 함수는 문자열이 아닌 경우 `std::invalid_argument` 예외를 발생시킵니다. 따라서 이 예외를 처리하여 오류를 다룰 수 있습니다. 예외 처리를 위해 `try-catch` 블록을 사용할 수 있습니다.

다음은 `std::stoi`를 사용하여 문자열을 정수로 변환하고 예외를 처리하는 예제입니다:


#include <iostream>
#include <string>
#include <stdexcept>

int main() {
    std::string str = "12345";

    try {
        int num = std::stoi(str);
        std::cout << "Converted integer: " << num << std::endl;
    } catch (const std::invalid_argument& e) {
        std::cout << "Invalid argument: " << e.what() << std::endl;
    } catch (const std::out_of_range& e) {
        std::cout << "Out of range: " << e.what() << std::endl;
    }

    return 0;
}



위의 예제에서는 `std::stoi` 함수를 `try` 블록 내에서 호출하고, 변환된 값을 `num` 변수에 저장합니다.

 

 만약 변환할 수 없는 문자열이 주어지면 `std::invalid_argument` 예외가 발생하고, 

 

`catch` 블록에서 해당 예외를 처리합니다. `std::out_of_range` 예외는 변환된 정수 값이 범위를 초과할 경우 발생할 수 있습니다.


반응형

'C++' 카테고리의 다른 글

sort func ex1  (0) 2023.06.25
pair, tuple  (0) 2023.06.24
STL  (0) 2023.06.23
템플릿  (0) 2020.11.12
추상 클래스  (0) 2020.11.12

댓글