Namespaces
Variants

std::stof, std::stod, std::stold

cppreference.net에서
 
 
 
std::basic_string
 
헤더 <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* 타입이라고 합시다.

1) std::strtof(str.c_str(), &ptr)을 호출합니다.
2) std::wcstof(str.c_str(), &ptr)을 호출합니다.
3) std::strtod(str.c_str(), &ptr)을 호출합니다.
4) std::wcstod(str.c_str(), &ptr)을 호출합니다.
5) std::strtold(str.c_str(), &ptr)을 호출합니다.
6) 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)
문자 시퀀스를 정수 또는 부동 소수점 값으로 변환
(함수)