Synopsis

template<class E,
    class T = char_traits<E>,
    class A = allocator<T> >
    class basic_string {
public:
    typedef T traits_type;
    typedef A allocator_type;
    typedef T0 iterator;
    typedef T1 const_iterator;
    typedef T2 size_type;
    typedef T3 difference_type;
    typedef reverse_iterator<const_iterator>
        const_reverse_iterator;
    typedef reverse_iterator<iterator>
        reverse_iterator;
    typedef typename allocator_type::pointer
        pointer;
    typedef typename allocator_type::const_pointer
        const_pointer;
    typedef typename allocator_type::reference
        reference;
    typedef typename allocator_type::const_reference
        const_reference;
    typedef typename allocator_type::value_type
        value_type;
    static const size_type npos = -1;
    basic_string();
    explicit basic_string(const allocator_type& al);
    basic_string(const basic_string& rhs);
    basic_string(const basic_string& rhs, size_type pos,
        size_type n = npos);
    basic_string(const basic_string& rhs, size_type pos,
        size_type n, const allocator_type& al);
    basic_string(const value_type *s, size_type n);
    basic_string(const value_type *s, size_type n,
        const allocator_type& al);
    basic_string(const value_type *s);
    basic_string(const value_type *s,
        const allocator_type& al);
    basic_string(size_type n, value_type c);
    basic_string(size_type n, value_type c,
        const allocator_type& al);
    template <class InIt>
        basic_string(InIt first, InIt last);
    template <class InIt>
        basic_string(InIt first, InIt last,
            const allocator_type& al);
    basic_string& operator=(const basic_string& rhs);
    basic_string& operator=(const value_type *s);
    basic_string& operator=(value_type c);
    iterator begin();
    const_iterator begin() const;
    iterator end();
    const_iterator end() const;
    reverse_iterator rbegin();
    const_reverse_iterator rbegin() const;
    reverse_iterator rend();
    const_reverse_iterator rend() const;
    const_reference at(size_type pos) const;
    reference at(size_type pos);
    const_reference operator[](size_type pos) const;
    reference operator[](size_type pos);
    void push_back(value_type c);
    const value_type *c_str() const;
    const value_type *data() const;
    size_type length() const;
    size_type size() const;
    size_type max_size() const;
    void resize(size_type n, value_type c = value_type());
    size_type capacity() const;
    void reserve(size_type n = 0);
    bool empty() const;
    basic_string& operator+=(const basic_string& rhs);
    basic_string& operator+=(const value_type *s);
    basic_string& operator+=(value_type c);
    basic_string& append(const basic_string& str);
    basic_string& append(const basic_string& str,
        size_type pos, size_type n);
    basic_string& append(const value_type *s,
        size_type n);
    basic_string& append(const value_type *s);
    basic_string& append(size_type n, value_type c);
    template<class InIt>
        basic_string& append(InIt first, InIt last);
    basic_string& assign(const basic_string& str);
    basic_string& assign(const basic_string& str,
        size_type pos, size_type n);
    basic_string& assign(const value_type *s,
        size_type n);
    basic_string& assign(const value_type *s);
    basic_string& assign(size_type n, value_type c);
    template<class InIt>
        basic_string& assign(InIt first, InIt last);
    basic_string& insert(size_type p0,
        const basic_string& str);
    basic_string& insert(size_type p0,
        const basic_string& str, size_type pos,
            size_type n);
    basic_string& insert(size_type p0,
        const value_type *s, size_type n);
    basic_string& insert(size_type p0,
        const value_type *s);
    basic_string& insert(size_type p0,
        size_type n, value_type c);
    iterator insert(iterator it,
        value_type c = value_type());
    void insert(iterator it, size_type n, value_type c);
    template<class InIt>
        void insert(iterator it,
            InIt first, InIt last);
    basic_string& erase(size_type p0 = 0,
        size_type n = npos);
    iterator erase(iterator it);
    iterator erase(iterator first, iterator last);
    void clear();
    basic_string& replace(size_type p0, size_type n0,
        const basic_string& str);
    basic_string& replace(size_type p0, size_type n0,
        const basic_string& str, size_type pos,
            size_type n);
    basic_string& replace(size_type p0, size_type n0,
        const value_type *s, size_type n);
    basic_string& replace(size_type p0, size_type n0,
        const value_type *s);
    basic_string& replace(size_type p0, size_type n0,
        size_type n, value_type c);
    basic_string& replace(iterator first0, iterator last0,
        const basic_string& str);
    basic_string& replace(iterator first0, iterator last0,
        const value_type *s, size_type n);
    basic_string& replace(iterator first0, iterator last0,
        const value_type *s);
    basic_string& replace(iterator first0, iterator last0,
        size_type n, value_type c);
    template<class InIt>
        basic_string&
            replace(iterator first0, iterator last0,
                InIt first, InIt last);
    size_type copy(value_type *s, size_type n,
        size_type pos = 0) const;
    void swap(basic_string& str);
    size_type find(const basic_string& str,
        size_type pos = 0) const;
    size_type find(const value_type *s, size_type pos,
        size_type n) const;
    size_type find(const value_type *s,
        size_type pos = 0) const;
    size_type find(value_type c, size_type pos = 0) const;
    size_type rfind(const basic_string& str,
        size_type pos = npos) const;
    size_type rfind(const value_type *s, size_type pos,
        size_type n = npos) const;
    size_type rfind(const value_type *s,
        size_type pos = npos) const;
    size_type rfind(value_type c,
        size_type pos = npos) const;
    size_type find_first_of(const basic_string& str,
        size_type pos = 0) const;
    size_type find_first_of(const value_type *s,
        size_type pos, size_type n) const;
    size_type find_first_of(const value_type *s,
        size_type pos = 0) const;
    size_type find_first_of(value_type c,
        size_type pos = 0) const;
    size_type find_last_of(const basic_string& str,
        size_type pos = npos) const;
    size_type find_last_of(const value_type *s,
        size_type pos, size_type n = npos) const;
    size_type find_last_of(const value_type *s,
        size_type pos = npos) const;
    size_type find_last_of(value_type c,
        size_type pos = npos) const;
    size_type find_first_not_of(const basic_string& str,
        size_type pos = 0) const;
    size_type find_first_not_of(const value_type *s,
        size_type pos, size_type n) const;
    size_type find_first_not_of(const value_type *s,
        size_type pos = 0) const;
    size_type find_first_not_of(value_type c,
        size_type pos = 0) const;
    size_type find_last_not_of(const basic_string& str,
        size_type pos = npos) const;
    size_type find_last_not_of(const value_type *s,
        size_type pos, size_type n) const;
    size_type find_last_not_of(const value_type *s,
        size_type pos = npos) const;
    size_type find_last_not_of(value_type c,
        size_type pos = npos) const;
    basic_string substr(size_type pos = 0,
        size_type n = npos) const;
    int compare(const basic_string& str) const;
    int compare(size_type p0, size_type n0,
        const basic_string& str);
    int compare(size_type p0, size_type n0,
        const basic_string& str, size_type pos,
            size_type n);
    int compare(const value_type *s) const;
    int compare(size_type p0, size_type n0,
        const value_type *s) const;
    int compare(size_type p0, size_type n0,
        const value_type *s, size_type pos) const;
    allocator_type get_allocator() const;
    };