std::stof, std::stod, std::stold
| 헤더 <string>
|
||
float stof ( const std::string& str, std::size_t* pos = nullptr );
|
에 정의됨 (1) | (C++11부터) |
float stof ( const std::wstring& str, std::size_t* pos = nullptr );
|
(2) | (C++11부터) |
double stod ( const std::string& str, std::size_t* pos = nullptr );
|
(3) | (C++11부터) |
double stod ( const std::wstring& str, std::size_t* pos = nullptr );
|
(4) | (C++11부터) |
long double stold( const std::string& str, std::size_t* pos = nullptr );
|
(5) | (C++11부터) |
long double stold( const std::wstring& str, std::size_t* pos = nullptr );
|
(6) | (C++11부터) |
문자열 str에서 부동소수점 값을 해석합니다.
내부(변환 함수에 대한) 포인터 ptr는 (1,3,5)의 경우 char* 타입, (2,4,6)의 경우 타입이거나 wchar_t* 타입이라고 합시다.
std::strtof(str.c_str(), &ptr)을 호출합니다.std::wcstof(str.c_str(), &ptr)을 호출합니다.std::strtod(str.c_str(), &ptr)을 호출합니다.std::wcstod(str.c_str(), &ptr)을 호출합니다.std::strtold(str.c_str(), &ptr)을 호출합니다.std::wcstold(str.c_str(), &ptr)을 호출합니다.함수는 첫 번째 공백이 아닌 문자가 발견될 때까지 모든 공백 문자(std::isspace에 의해 결정됨)를 무시합니다. 그런 다음 유효한 부동소수점 표현을 형성하는 데 가능한 한 많은 문자를 가져와 부동소수점 값으로 변환합니다. 유효한 부동소수점 값은 다음 중 하나일 수 있습니다:
- 십진 부동소수점 표현. 다음 부분으로 구성됩니다:
- (선택 사항) 더하기 또는 빼기 부호
- 현재 C 로케일에 의해 결정되는 소수점 문자를 선택적으로 포함하는 비어 있지 않은 십진 숫자 시퀀스 (가수 정의)
- (선택 사항)
e또는E뒤에 선택적 빼기 또는 더하기 부호와 비어 있지 않은 십진 숫자 시퀀스가 오는 것 (밑 10에 대한 지수 정의)
- 16진 부동소수점 표현. 다음 부분으로 구성됩니다:
- (선택 사항) 더하기 또는 빼기 부호
0x또는0X- 현재 C 로케일에 의해 결정되는 소수점 문자를 선택적으로 포함하는 비어 있지 않은 16진 숫자 시퀀스 (가수 정의)
- (선택 사항)
p또는P뒤에 선택적 빼기 또는 더하기 부호와 비어 있지 않은 십진 숫자 시퀀스가 오는 것 (밑 2에 대한 지수 정의)
- 무한대 표현. 다음 부분으로 구성됩니다:
- (선택 사항) 더하기 또는 빼기 부호
INF또는INFINITY대소문자 구분 없음
- 숫자가 아님(NaN) 표현. 다음 부분으로 구성됩니다:
- (선택 사항) 더하기 또는 빼기 부호
NAN또는NAN(char_sequence )NAN부분의 대소문자 구분 없음. char_sequence는 숫자, 라틴 문자, 밑줄만 포함할 수 있습니다. 결과는 조용한 NaN(quiet NaN) 부동소수점 값입니다.
- 현재 설치된 C 로케일에서 허용할 수 있는 다른 표현.
pos이 널 포인터가 아니면 ptr은 str.c_str()에서 변환되지 않은 첫 번째 문자의 주소를 받고, 해당 문자의 인덱스가 계산되어 *pos에 저장되어 변환으로 처리된 문자 수를 제공합니다.
매개변수
| str | - | 변환할 문자열 |
| pos | - | 처리된 문자 수를 저장할 정수의 주소 |
반환값
지정된 부동 소수점 타입으로 변환된 문자열.
예외
std::invalid_argument 변환을 수행할 수 없는 경우.
std::out_of_range 변환된 값이 결과 타입의 범위를 벗어나거나 기본 함수( std::strtof , std::strtod 또는 std::strtold )가 errno 를 ERANGE 로 설정하는 경우.
예제
|
이 섹션은 불완전합니다
이유: 예제 없음 |
결함 보고서
다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.
| DR | 적용 대상 | 게시된 동작 | 올바른 동작 |
|---|---|---|---|
| LWG 2009 | C++11 |
std::out_of_range
변환된 값이 결과 타입의 범위를 벗어나는 경우
예외가 발생하지 않음 |
예외 발생 |
| LWG 2403 | C++11 |
stof
가
std::strtod
또는
std::wcstod
호출
|
stof
가
std::strtof
또는
std::wcstof
호출
|
참고 항목
|
(C++11)
(C++11)
(C++11)
|
문자열을 부호 있는 정수로 변환
(함수) |
|
(C++11)
(C++11)
|
문자열을 부호 없는 정수로 변환
(함수) |
|
(C++17)
|
문자 시퀀스를 정수 또는 부동 소수점 값으로 변환
(함수) |