티스토리 뷰
목차
반응형
C++11 stoi stol stoll 함수 사용법, 문자에서 정수 변환 예제
string 헤더 파일에 정의된 함수 원형은 아래와 같습니다.
1 2 3 4 5 6 7 8 | int stoi( const std::string& str, std::size_t* pos = 0, int base = 10 ); int stoi( const std::wstring& str, std::size_t* pos = 0, int base = 10 ); long stol( const std::string& str, std::size_t* pos = 0, int base = 10 ); long stol( const std::wstring& str, std::size_t* pos = 0, int base = 10 ); long long stoll( const std::string& str, std::size_t* pos = 0, int base = 10 ); long long stoll( const std::wstring& str, std::size_t* pos = 0, int base = 10 ); | cs |
문자열 string str에서 부호있는 정수를 인식하고 반환합니다. (signed integer)
1 2 3 | 1) std::strtol(str.c_str(), &ptr, base) or std::wcstol(str.c_str(), &ptr, base) 2) std::strtol(str.c_str(), &ptr, base) or std::wcstol(str.c_str(), &ptr, base) 3) std::strtoll(str.c_str(), &ptr, base) or std::wcstoll(str.c_str(), &ptr, base) | cs |
위 함수는 공통으로 isspace()를 이용해 첫 번째 공백을 찾습니다. 그리고 다음번 유효한 숫자를 찾습니다. (base-n, n = base 정수) 이 과정을 반복하며 문자는 버리고 숫자는 합쳐 유효한 정수값을 생성해 반환합니다.
- 옵션 1 : +, - 기호
- 옵션 2 : prefix, 진수를 나타내는 부호 (0 또는 8)
- 옵션 3 : 0x 또는 0x 진수를 나타내는 부호 (0 또는 16)
[C++ 문자 -> 정수 변환, 추출]
매개변수
- str : 변환할 문자열
- pos : 처리된 문자 수를 저장할 정수형 변수
- base : number base 진수
반환 값
- 부호있는 정수 유형의 값 (문자열 -> 숫자)
예외 처리
- std::invalid_argument : 변환을 수행할 수 없는 경우
- std::out_of_range : 변환된 값이 범위를 벗아날 경우
[C++ 문자 -> 정수 변환, 추출]
예제
샘플 소스 코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | #include <iostream> #include <string> int main() { std::string str1 = "45"; std::string str2 = "3.14159"; std::string str3 = "31337 with words"; std::string str4 = "words and 2"; int myint1 = std::stoi(str1); int myint2 = std::stoi(str2); int myint3 = std::stoi(str3); // error: 'std::invalid_argument' // int myint4 = std::stoi(str4); std::cout << "std::stoi(\"" << str1 << "\") is " << myint1 << '\n'; std::cout << "std::stoi(\"" << str2 << "\") is " << myint2 << '\n'; std::cout << "std::stoi(\"" << str3 << "\") is " << myint3 << '\n'; //std::cout << "std::stoi(\"" << str4 << "\") is " << myint4 << '\n'; } | cs |
샘플 결과
1 2 3 | std::stoi("45") is 45 std::stoi("3.14159") is 3 std::stoi("31337 with words") is 31337 | cs |
출처 : cppreference
C++11 stoi stol stoll 함수 사용법, 문자에서 정수 변환 예제
반응형