# std::basic_string<CharT,Traits,Allocator>::substr

From cppreference.com
< cpp‎ | string‎ | basic string

basic_string substr( size_type pos = 0, size_type count = npos ) const; |  |

Returns a substring `[pos, pos+count)`. If the requested substring extends past the end of the string, or if count == npos, the returned substring is `[pos,` `size()` `)`.

### Parameters

pos | - | position of the first character to include
count | - | length of the substring

### Return value

String containing the substring `[pos, pos+count)`.

### Exceptions

std::out_of_range if `pos >` `size()`

### Complexity

Linear in `count`

### Notes

The returned string is constructed as if by basic_string(data()+pos, count), which implies that the returned string's allocator will be default-constructed — the new allocator will not be a copy of `this->` `get_allocator()`.

### Example

Run this code

    #include <string>
    #include <iostream>

    int main()
    {
        std::string a = "0123456789abcdefghij";

        // count is npos, returns [pos, size())
        std::string sub1 = a.substr(10);
        std::cout << sub1 << '\n';

        // both pos and pos+count are within bounds, returns [pos, pos+count)
        std::string sub2 = a.substr(5, 3);
        std::cout << sub2 << '\n';

        // pos is within bounds, pos+count is not, returns [pos, size())
        std::string sub4 = a.substr(a.size()-3, 50);
        std::cout << sub4 << '\n';

        try {
            // pos is out of bounds, throws
            std::string sub5 = a.substr(a.size()+3, 50);
            std::cout << sub5 << '\n';
        } catch(const std::out_of_range& e) {
            std::cout << "pos exceeds string size\n";
        }
    }

Output:

    abcdefghij
    567
    hij
    pos exceeds string size

### See also

copy | copies characters (public member function)
sizelength | returns the number of characters (public member function)
find | find characters in the string (public member function)

Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/string/basic_string/substr&oldid=100933"