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

Defined in header <cstdlib>
int       atoi( const char *str );
long      atol( const char *str );
long long atoll( const char *str );
(since C++11)

Interprets an integer value in a byte string pointed to by str.

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


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

Return value

Integer value corresponding to the contents of str on success.

If no conversion can be performed, ​0​ is returned.

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


#include <cstdlib>
#include <iostream>
int main()
    const auto data = { 
        "31337 with words",
        "words and 2",
    for (const char* s : data) {
        const int i {std::atoi(s)};
        std::cout << "std::atoi('" << s << "') is " << i << '\n';
        if (const long long ll {std::atoll(s)}; i != ll) {
            std::cout << "std::atoll('" << s << "') is " << ll << '\n';

Possible output:

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

See also

converts a string to a signed integer
converts a string to an unsigned integer
converts a byte string to an integer value
converts a byte string to an unsigned integer value
converts a byte string to std::intmax_t or std::uintmax_t
converts a character sequence to an integer or floating-point value
C documentation for atoi, atol, atoll

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.