AngelScript

string object

Path: /sdk/add_on/scriptstdstring/

This add-on registers the `std::string` type as-is with AngelScript. This gives perfect compatibility with C++ functions that use `std::string` in parameters or as return type.

A potential drawback is that the `std::string` type is a value type, thus may increase the number of copies taken when string values are being passed around in the script code. However, this is most likely only a problem for scripts that perform a lot of string operations.

Register the type with `RegisterStdString(asIScriptEngine*)`. Register the optional split method and global join function with `RegisterStdStringUtils(asIScriptEngine*)`. The optional functions require that the array template object has been registered first.

## Public C++ interface

Refer to the `std::string` implementation for your compiler.

## Public script interface

      class string
      {
        // Constructors
        string();
        string(const string &in);

        // Property accessor for getting and setting the length
        uint length { get const; set; }

        // Methods for getting and setting the length
        uint length() const;
        void resize(uint);

        // Assignment and concatenation
        string &opAssign(const string &in other);
        string &opAddAssign(const string &in other);
        string  opAdd(const string &in right) const;

        // Access individual characters
        uint8       &opIndex(uint);
        const uint8 &opIndex(uint) const;

        // Comparison operators
        bool opEquals(const string &in right) const;
        int  opCmp(const string &in right) const;

        // Substring
        string substr(uint start = 0, int count = -1) const;
        array<string>@ split(const string &in delimiter) const;

        // Search
        int findFirst(const string &in str, uint start = 0) const;
        int findLast(const string &in str, int start = -1) const;

        // Automatic conversion from primitive types to string type
        string &opAssign(double val);
        string &opAddAssign(double val);
        string  opAdd(double val) const;
        string  opAdd_r(double val) const;

        string &opAssign(int val);
        string &opAddAssign(int val);
        string  opAdd(int val) const;
        string  opAdd_r(int val) const;

        string &opAssign(uint val);
        string &opAddAssign(uint val);
        string  opAdd(uint val) const;
        string  opAdd_r(uint val) const;

        string &opAssign(bool val);
        string &opAddAssign(bool val);
        string  opAdd(bool val) const;
        string  opAdd_r(bool val) const;
      }

      // Takes an array of strings and joins them into one string separated by the specified delimiter
      string join(const array<string> &in arr, const string &in delimiter);

      // Formatting numbers into strings
      // The options should be informed as characters in a string
      //  l = left justify
      //  0 = pad with zeroes
      //  + = always include the sign, even if positive
      //    = add a space in case of positive number
      //  h = hexadecimal integer small letters
      //  H = hexadecimal integer capital letters
      //  e = exponent character with small e
      //  E = exponent character with capital E
      string formatInt(int64 val, const string &in options, uint width = 0);
      string formatFloat(double val, const string &in options, uint width = 0, uint precision = 0);

      // Parsing numbers from strings
      int64  parseInt(const string &in, uint base = 10, uint &out byteCount = 0);
      double parseFloat(const string &in, uint &out byteCount = 0);