basic_string_stof
basic_string_stof (문자열을 부동소수점 값으로 변환하는 함수)
이 페이지는 C++ 표준 라이브러리에서 문자열을 부동소수점 값으로 변환하는 stof, stod, stold 함수에 대해 설명해요. 이 함수들은 <string> 헤더에 정의되어 있으며 C++11부터 사용할 수 있어요. 문자열에서 숫자 부분을 해석해 각각 float, double, long double 타입으로 변환해 줘요.
출처: cppreference
본문
함수 개요
| Defined in header |
||
|---|---|---|
| float stof ( const std :: string & str , std :: size_t * pos = nullptr ); | (1) | (since C++11) |
| float stof ( const std :: wstring & str , std :: size_t * pos = nullptr ); | (2) | (since C++11) |
| double stod ( const std :: string & str , std :: size_t * pos = nullptr ); | (3) | (since C++11) |
| double stod ( const std :: wstring & str , std :: size_t * pos = nullptr ); | (4) | (since C++11) |
| long double stold ( const std :: string & str , std :: size_t * pos = nullptr ); | (5) | (since C++11) |
| long double stold ( const std :: wstring & str , std :: size_t * pos = nullptr ); | (6) | (since C++11) |
이 함수들은 문자열 str에서 부동소수점 값을 해석해요.
ptr은 변환 함수 내부에서 사용하는 포인터로, (1), (3), (5)에서는 char* 타입이고 (2), (4), (6)에서는 wchar_t* 타입이에요.
함수는 std::isspace로 판별되는 공백 문자를 첫 번째 비공백 문자가 나올 때까지 모두 무시해요. 그런 다음 유효한 부동소수점 표현을 구성할 수 있는 최대한 많은 문자를 가져와 부동소수점 값으로 변환해요. 유효한 부동소수점 값은 다음 중 하나예요.
- 십진 부동소수점 표현: 다음 부분으로 구성돼요.
- (선택) 플러스 또는 마이너스 부호
- 현재 C 로케일에서 결정되는 소수점 문자를 포함할 수 있는 비어 있지 않은 십진 숫자 시퀀스 (가수부를 정의)
- (선택)
e또는E뒤에 선택적인 마이너스/플러스 부호와 비어 있지 않은 십진 숫자 시퀀스 (밑이 10인 지수부를 정의)
- 십육진 부동소수점 표현: 다음 부분으로 구성돼요.
- (선택) 플러스 또는 마이너스 부호
0x또는0X- 현재 C 로케일에서 결정되는 소수점 문자를 포함할 수 있는 비어 있지 않은 십육진 숫자 시퀀스 (가수부를 정의)
- (선택)
p또는P뒤에 선택적인 마이너스/플러스 부호와 비어 있지 않은 십진 숫자 시퀀스 (밑이 2인 지수부를 정의)
- 무한대 표현: 다음 부분으로 구성돼요.
- (선택) 플러스 또는 마이너스 부호
- 대소문자를 구분하지 않는
INF또는INFINITY
- NaN(숫자가 아님) 표현: 다음 부분으로 구성돼요.
- (선택) 플러스 또는 마이너스 부호
NAN부분은 대소문자를 구분하지 않는NAN또는NAN(문자_시퀀스)- 문자_시퀀스는 숫자, 라틴 문자, 밑줄만 포함할 수 있어요. 결과는 조용한 NaN(quiet NaN) 부동소수점 값이에요.
- 현재 설치된 C 로케일에서 허용하는 다른 표현
pos가 널 포인터가 아니라면, ptr은 str.c_str()에서 변환되지 않은 첫 번째 문자의 주소를 받아요. 그 문자의 인덱스가 계산되어 *pos에 저장되는데, 이 값은 변환으로 처리된 문자의 수를 나타내요.
매개변수
| str | - | 변환할 문자열 |
|---|---|---|
| pos | - | 처리된 문자 수를 저장할 정수의 주소 |
반환값
변환된 문자열을 지정된 부동소수점 타입으로 반환해요.
예외
- 변환을 수행할 수 없으면
std::invalid_argument를 던져요. - 변환된 값이 결과 타입의 범위를 벗어나거나, 내부 함수(
std::strtof,std::strtod,std::strtold)가errno를ERANGE로 설정하면std::out_of_range를 던져요.
예제
| 이 섹션은 불완전해요. 이유: 예제 없음 |
|---|
결함 보고서
다음 동작 변경 결함 보고서는 이전에 공개된 C++ 표준에 소급 적용되었어요.
| DR | 적용 대상 | 공개된 동작 | 올바른 동작 |
|---|---|---|---|
| LWG 2009 | C++11 | 변환된 값이 결과 타입의 범위를 벗어나도 std::out_of_range가 발생하지 않았음 |
발생하도록 수정 |
| LWG 2403 | C++11 | stof가 std::strtod 또는 std::wcstod를 호출했음 |
stof가 std::strtof 또는 std::wcstof를 호출하도록 수정 |
같이 보기
| stoi stol stoll (C++11) (C++11) (C++11) | 문자열을 부호 있는 정수로 변환 (함수) [편집] |
|---|---|
| stoul stoull (C++11) (C++11) | 문자열을 부호 없는 정수로 변환 (함수) [편집] |
| from_chars (C++17) | 문자 시퀀스를 정수 또는 부동소수점 값으로 변환 (함수) [편집] |