Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::atoi,std::atol,std::atoll

      From cppreference.com
      <cpp‎ |string‎ |byte
       
       
       
       
      Defined in header<cstdlib>
      int       atoi(constchar* str);
      (1)
      long      atol(constchar* str);
      (2)
      longlong atoll(constchar* str);
      (3)(since C++11)

      Interprets an integer value in a byte string pointed to bystr. The implied radix is always 10.

      Discards any whitespace characters until the first non-whitespace character is found, then takes as many characters as possible to form a valid integer number representation and converts them to an integer value. The valid integer value consists of the following parts:

      • (optional) plus or minus sign
      • numeric digits

      If the value of the result cannot be represented, i.e. the converted value falls out of range of the corresponding return type, the behavior is undefined.

      Contents

      [edit]Parameters

      str - pointer to the null-terminated byte string to be interpreted

      [edit]Return value

      Integer value corresponding to the contents ofstr on success.

      If no conversion can be performed,0 is returned.

      [edit]Possible implementation

      template<typename T>T atoi_impl(constchar* str){while(std::isspace(static_cast<unsignedchar>(*str)))++str; bool negative=false; if(*str=='+')++str;elseif(*str=='-'){++str;        negative=true;}     T result=0;for(;std::isdigit(static_cast<unsignedchar>(*str));++str){int digit=*str-'0';        result*=10;        result-= digit;// calculate in negatives to support INT_MIN, LONG_MIN,..} return negative? result:-result;} int atoi(constchar* str){return atoi_impl<int>(str);} long atol(constchar* str){return atoi_impl<long>(str);} longlong atoll(constchar* str){return atoi_impl<longlong>(str);}

      Actual C++ library implementations fall back to C library implementations ofatoi,atoil, andatoll, which either implement it directly (as inMUSL libc) or delegate tostrtol/strtoll (as inGNU libc).

      [edit]Example

      Run this code
      #include <cstdlib>#include <iostream> int main(){constauto data={"42","0x2A",// treated as "0" and junk "x2A", not as hexadecimal"3.14159","31337 with words","words and 2","-012345","10000000000"// note: out of int32_t range}; for(constchar* s: data){constint i{std::atoi(s)};std::cout<<"std::atoi('"<< s<<"') is "<< i<<'\n';if(constlonglong ll{std::atoll(s)}; i!= ll)std::cout<<"std::atoll('"<< s<<"') is "<< ll<<'\n';}}

      Possible output:

      std::atoi('42') is 42std::atoi('0x2A') is 0std::atoi('3.14159') is 3std::atoi('31337 with words') is 31337std::atoi('words and 2') is 0std::atoi('-012345') is -12345std::atoi('10000000000') is 1410065408std::atoll('10000000000') is 10000000000

      [edit]See also

      (C++11)(C++11)(C++11)
      converts a string to a signed integer
      (function)[edit]
      (C++11)(C++11)
      converts a string to an unsigned integer
      (function)[edit]
      converts a byte string to an integer value
      (function)[edit]
      converts a byte string to an unsigned integer value
      (function)[edit]
      (C++11)(C++11)
      converts a byte string tostd::intmax_t orstd::uintmax_t
      (function)[edit]
      (C++17)
      converts a character sequence to an integer or floating-point value
      (function)[edit]
      C documentation foratoi,atol,atoll
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/string/byte/atoi&oldid=152810"

      [8]ページ先頭

      ©2009-2025 Movatter.jp