Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::strtof,std::strtod,std::strtold

      From cppreference.com
      <cpp‎ |string‎ |byte
       
       
       
       
      Defined in header<cstdlib>
      float       strtof(constchar* str,char** str_end);
      (1)(since C++11)
      double      strtod(constchar* str,char** str_end);
      (2)
      longdouble strtold(constchar* str,char** str_end);
      (3)(since C++11)

      Interprets a floating point value in a byte string pointed to bystr.

      Function discards any whitespace characters (as determined bystd::isspace) until first non-whitespace character is found. Then it takes as many characters as possible to form a valid floating-point representation and converts them to a floating-point value. The valid floating-point value can be one of the following:

      • decimal floating-point expression. It consists of the following parts:
      • (optional) plus or minus sign
      • nonempty sequence of decimal digits optionally containing decimal-point character (as determined by the current Clocale) (defines significand)
      • (optional)e orE followed with optional minus or plus sign and nonempty sequence of decimal digits (defines exponent to base10)
      • hexadecimal floating-point expression. It consists of the following parts:
      • (optional) plus or minus sign
      • 0x or0X
      • nonempty sequence of hexadecimal digits optionally containing a decimal-point character (as determined by the current Clocale) (defines significand)
      • (optional)p orP followed with optional minus or plus sign and nonempty sequence of decimal digits (defines exponent to base2)
      • infinity expression. It consists of the following parts:
      • (optional) plus or minus sign
      • INF orINFINITY ignoring case
      • not-a-number expression. It consists of the following parts:
      • (optional) plus or minus sign
      • NAN orNAN(char_sequence ) ignoring case of theNAN part.char_sequence can only contain digits, Latin letters, and underscores. The result is a quiet NaN floating-point value.
      (since C++11)
      • any other expression that may be accepted by the currently installed Clocale.

      The functions sets the pointer pointed to bystr_end to point to the character past the last character interpreted. Ifstr_end is a null pointer, it is ignored.

      Contents

      [edit]Parameters

      str - pointer to the null-terminated byte string to be interpreted
      str_end - pointer to a pointer to character.

      [edit]Return value

      Floating point value corresponding to the contents ofstr on success. If the converted value falls out of range of corresponding return type, range error occurs andHUGE_VAL,HUGE_VALF orHUGE_VALL is returned. If no conversion can be performed,0 is returned and*str_end is set tostr.

      [edit]Example

      Run this code
      #include <cerrno>#include <clocale>#include <cstdlib>#include <iostream>#include <string> int main(){constchar* p="111.11 -2.22 0X1.BC70A3D70A3D7P+6 -Inf 1.18973e+4932zzz";char* end{};std::cout<<"Parsing\""<< p<<"\":\n";errno=0;for(double f= std::strtod(p,&end); p!= end; f= std::strtod(p,&end)){std::cout<<"  '"<<std::string(p, end- p)<<"' -> ";        p= end;if(errno==ERANGE){std::cout<<"range error, got ";errno=0;}std::cout<< f<<'\n';} if(std::setlocale(LC_NUMERIC,"de_DE.utf8")){std::cout<<"With de_DE.utf8 locale:\n";std::cout<<"  '123.45' -> "<< std::strtod("123.45",0)<<'\n';std::cout<<"  '123,45' -> "<< std::strtod("123,45",0)<<'\n';}}

      Possible output:

      Parsing "111.11 -2.22 0X1.BC70A3D70A3D7P+6 -Inf 1.18973e+4932zzz":  '111.11' -> 111.11  ' -2.22' -> -2.22  ' 0X1.BC70A3D70A3D7P+6' -> 111.11  ' -Inf' -> -inf  ' 1.18973e+4932' -> range error, got infWith de_DE.utf8 locale:  '123.45' -> 123  '123,45' -> 123.45

      [edit]See also

      converts a byte string to a floating point value
      (function)[edit]
      converts a wide string to a floating-point value
      (function)[edit]
      (C++17)
      converts a character sequence to an integer or floating-point value
      (function)[edit]
      C documentation forstrtof,strtod,strtold
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/string/byte/strtof&oldid=178834"

      [8]ページ先頭

      ©2009-2025 Movatter.jp