## boost/python/str.hpp

### Introduction

Exposes a TypeWrapper for the Python `str` type.

### Class `str`

Exposes the string methods of Python's built-in `str` type. The semantics of the constructors and member functions defined below, except for the two-argument constructors which construct str objects from a range of characters, can be fully understood by reading the TypeWrapper concept definition. Since str is publicly derived from `object`, the public `object` interface applies to `str` instances as well.

    namespace boost { namespace python
    {
      class str : public object
      {
       public:
          str(); // new str

          str(char const* s); // new str

          str(char const* start, char const* finish); // new str
          str(char const* start, std::size_t length); // new str

          template <class T>
          explicit str(T const& other);

          str capitalize() const;

          template <class T>
          str center(T const& width) const;

          template<class T>
          long count(T const& sub) const;
          template<class T1, class T2>
          long count(T1 const& sub,T2 const& start) const;
          template<class T1, class T2, class T3>
          long count(T1 const& sub,T2 const& start, T3 const& end) const;

          object decode() const;
          template<class T>
          object decode(T const& encoding) const;
          template<class T1, class T2>
          object decode(T1 const& encoding, T2 const& errors) const;

          object encode() const;
          template <class T>
          object encode(T const& encoding) const;
          template <class T1, class T2>
          object encode(T1 const& encoding, T2 const& errors) const;

          template <class T>
          bool endswith(T const& suffix) const;
          template <class T1, class T2>
          bool endswith(T1 const& suffix, T2 const& start) const;
          template <class T1, class T2, class T3>
          bool endswith(T1 const& suffix, T2 const& start, T3 const& end) const;

          str expandtabs() const;
          template <class T>
          str expandtabs(T const& tabsize) const;

          template <class T>
          long find(T const& sub) const;
          template <class T1, class T2>
          long find(T1 const& sub, T2 const& start) const;
          template <class T1, class T2, class T3>
          long find(T1 const& sub, T2 const& start, T3 const& end) const;

          template <class T>
          long index(T const& sub) const;
          template <class T1, class T2>
          long index(T1 const& sub, T2 const& start) const;
          template <class T1, class T2, class T3>
          long index(T1 const& sub, T2 const& start, T3 const& end) const;

          bool isalnum() const;
          bool isalpha() const;
          bool isdigit() const;
          bool islower() const;
          bool isspace() const;
          bool istitle() const;
          bool isupper() const;

          template <class T>
          str join(T const& sequence) const;

          template <class T>
          str ljust(T const& width) const;

          str lower() const;
          str lstrip() const;

          template <class T1, class T2>
          str replace(T1 const& old, T2 const& new_) const;
          template <class T1, class T2, class T3>
          str replace(T1 const& old, T2 const& new_, T3 const& maxsplit) const;

          template <class T>
          long rfind(T const& sub) const;
          template <class T1, class T2>
          long rfind(T1 const& sub, T2 const& start) const;
          template <class T1, class T2, class T3>
          long rfind(T1 const& sub, T2 const& start, T3 const& end) const;

          template <class T>
          long rindex(T const& sub) const;
          template <class T1, class T2>
          long rindex(T1 const& sub, T2 const& start) const;
          template <class T1, class T2, class T3>
          long rindex(T1 const& sub, T2 const& start, T3 const& end) const;

          template <class T>
          str rjust(T const& width) const;

          str rstrip() const;

          list split() const;
          template <class T>
          list split(T const& sep) const;
          template <class T1, class T2>
          list split(T1 const& sep, T2 const& maxsplit) const;

          list splitlines() const;
          template <class T>
          list splitlines(T const& keepends) const;

          template <class T>
          bool startswith(T const& prefix) const;
          template <class T1, class T2>
          bool startswidth(T1 const& prefix, T2 const& start) const;
          template <class T1, class T2, class T3>
          bool startswidth(T1 const& prefix, T2 const& start, T3 const& end) const;

          str strip() const;
          str swapcase() const;
          str title() const;

          template <class T>
          str translate(T const& table) const;
          template <class T1, class T2>
          str translate(T1 const& table, T2 const& deletechars) const;

          str upper() const;
      };
    }}

### Example

    using namespace boost::python;
    str remove_angle_brackets(str x)
    {
      return x.strip('<').strip('>');
    }