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가 널 포인터가 아니라면, ptrstr.c_str()에서 변환되지 않은 첫 번째 문자의 주소를 받아요. 그 문자의 인덱스가 계산되어 *pos에 저장되는데, 이 값은 변환으로 처리된 문자의 수를 나타내요.

매개변수

str - 변환할 문자열
pos - 처리된 문자 수를 저장할 정수의 주소

반환값

변환된 문자열을 지정된 부동소수점 타입으로 반환해요.

예외

  • 변환을 수행할 수 없으면 std::invalid_argument를 던져요.
  • 변환된 값이 결과 타입의 범위를 벗어나거나, 내부 함수(std::strtof, std::strtod, std::strtold)가 errnoERANGE로 설정하면 std::out_of_range를 던져요.

예제

이 섹션은 불완전해요. 이유: 예제 없음

결함 보고서

다음 동작 변경 결함 보고서는 이전에 공개된 C++ 표준에 소급 적용되었어요.

DR 적용 대상 공개된 동작 올바른 동작
LWG 2009 C++11 변환된 값이 결과 타입의 범위를 벗어나도 std::out_of_range가 발생하지 않았음 발생하도록 수정
LWG 2403 C++11 stofstd::strtod 또는 std::wcstod를 호출했음 stofstd::strtof 또는 std::wcstof를 호출하도록 수정

같이 보기

stoi stol stoll (C++11) (C++11) (C++11) 문자열을 부호 있는 정수로 변환 (함수) [편집]
stoul stoull (C++11) (C++11) 문자열을 부호 없는 정수로 변환 (함수) [편집]
from_chars (C++17) 문자 시퀀스를 정수 또는 부동소수점 값으로 변환 (함수) [편집]

더 알아보기 (Learn more)

cppreference