# RakNet::RakString Class Reference

String class. More...

`#include <RakString.h>`

List of all members.

## Public Member Functions
| operator const char * () const
| Implicit return of const char*.
const char * | C_String (void) const
| Same as std::string::c_str.
RakString & | operator= (const RakString &rhs)
| Assigment operators.
RakString & | operator+= (const RakString &rhs)
| Concatenation.
unsigned char | operator[] (const unsigned int position) const
| Character index. Do not use to change the string however.
size_t | Find (const char *stringToFind, size_t pos=0)
bool | operator== (const RakString &rhs) const
| Equality.
bool | operator!= (const RakString &rhs) const
| Inequality.
const char * | ToLower (void)
| Change all characters to lowercase.
const char * | ToUpper (void)
| Change all characters to uppercase.
void | Set (const char *format,...)
| Set the value of the string.
RakString | Assign (const char *str, size_t pos, size_t n)
bool | IsEmpty (void) const
| Returns if the string is empty. Also, C_String() would return "".
size_t | GetLength (void) const
| Returns the length of the string.
void | Replace (unsigned index, unsigned count, unsigned char c)
| Replace character(s) in starting at index, for count, with c.
void | SetChar (unsigned index, unsigned char c)
| Replace character at index with c.
void | SetChar (unsigned index, RakNet::RakString s)
| Replace character at index with string s.
void | Truncate (unsigned length)
| Make sure string is no longer than length.
void | Erase (unsigned int index, unsigned int count)
| Erase characters out of the string at index for count.
void | TerminateAtFirstCharacter (char c)
| Set the first instance of c with a NULL terminator.
void | TerminateAtLastCharacter (char c)
| Set the last instance of c with a NULL terminator.
void | RemoveCharacter (char c)
| Remove all instances of c.
int | StrCmp (const RakString &rhs) const
| Compare strings (case sensitive).
int | StrICmp (const RakString &rhs) const
| Compare strings (not case sensitive).
void | Clear (void)
| Clear the string.
void | Printf (void)
| Print the string to the screen.
void | FPrintf (FILE *fp)
| Print the string to a file.
bool | IPAddressMatch (const char *IP)
| Does the given IP address match the IP address encoded into this string, accounting for wildcards?
bool | ContainsNonprintableExceptSpaces (void) const
| Does the string contain non-printable characters other than spaces?
bool | IsEmailAddress (void) const
| Is this a valid email address?
RakNet::RakString & | URLEncode (void)
| URL Encode the string. See http://www.codeguru.com/cpp/cpp/cpp_mfc/article.php/c4029/.
RakNet::RakString & | URLDecode (void)
| URL decode the string.
RakNet::RakString & | SQLEscape (void)
| Scan for quote, double quote, and backslash and prepend with backslash.
RakNet::RakString & | MakeFilePath (void)
| Fix to be a file path, ending with /.
void | Serialize (BitStream *bs) const
void | SerializeCompressed (BitStream *bs, int languageId=0, bool writeLanguageId=false) const
bool | Deserialize (BitStream *bs)
bool | DeserializeCompressed (BitStream *bs, bool readLanguageId=false)
## Static Public Member Functions
static RakNet::RakString | NonVariadic (const char *str)
static unsigned long | ToInteger (const char *str)
| Has the string into an unsigned int.
static void | FreeMemory (void)
static void | Serialize (const char *str, BitStream *bs)
| Static version of the Serialize function.
static void | SerializeCompressed (const char *str, BitStream *bs, int languageId=0, bool writeLanguageId=false)
| Static version of the SerializeCompressed function.
static bool | Deserialize (char *str, BitStream *bs)
| Static version of the Deserialize() function.
static bool | DeserializeCompressed (char *str, BitStream *bs, bool readLanguageId=false)
| Static version of the DeserializeCompressed() function.
## Static Public Attributes
static unsigned int | nPos
| Means undefined position.

## Detailed Description

String class.

Has the following improvements over std::string -Reference counting: Suitable to store in lists -Variadic assignment operator -Doesn't cause linker errors

## Member Function Documentation

RakString RakNet::RakString::Assign | ( | const char * | str,
|  | size_t | pos,
|  | size_t | n |
| ) |  |  |

Sets a copy of a substring of str as the new content. The substring is the portion of str that begins at the character position pos and takes up to n characters (it takes less than n if the end of str is reached before).

Parameters:

  `[in]` | str | The string to copy in
  `[in]` | pos | The position on str to start the copy
  `[in]` | n | How many chars to copy

Returns:
  Returns the string, note that the current string is set to that value as well

bool RakNet::RakString::Deserialize | ( | BitStream * | bs | ) |

Deserialize what was written by Serialize

Parameters:

  `[in]` | bs | Bitstream to serialize from

Returns:
  true if the deserialization was successful

bool RakNet::RakString::DeserializeCompressed | ( | BitStream * | bs,
|  | bool | readLanguageId = `false` |
| ) |  |  |

Deserialize compressed string, written by SerializeCompressed

Parameters:

  `[in]` | bs | Bitstream to serialize from
  `[in]` | readLanguageId | If true, looks for the variable langaugeId in the data stream. Must match what was passed to SerializeCompressed

Returns:
  true if the deserialization was successful

Precondition:
  StringCompressor::AddReference must have been called to instantiate the class (Happens automatically from RakPeer::Startup())

size_t RakNet::RakString::Find | ( | const char * | stringToFind,
|  | size_t | pos = `0` |
| ) |  |  |

String class find replacement Searches the string for the content specified in stringToFind and returns the position of the first occurrence in the string. Search only includes characters on or after position pos, ignoring any possible occurrences in previous locations.

Parameters:

  `[in]` | stringToFind | The string to find inside of this object's string
  `[in]` | pos | The position in the string to start the search

Returns:
  Returns the position of the first occurrence in the string.

static void RakNet::RakString::FreeMemory | ( | void |  | ) | `[static]`

RakString uses a freeList of old no-longer used strings Call this function to clear this memory on shutdown

static RakNet::RakString RakNet::RakString::NonVariadic | ( | const char * | str | ) | `[static]`

Create a RakString with a value, without doing printf style parsing Equivalent to assignment operator

void RakNet::RakString::Serialize | ( | BitStream * | bs | ) | const

Serialize to a bitstream, uncompressed (slightly faster)

Parameters:

  `[out]` | bs | Bitstream to serialize to

void RakNet::RakString::SerializeCompressed | ( | BitStream * | bs,
|  | int | languageId = `0`,
|  | bool | writeLanguageId = `false` |
| ) |  |  | const

Serialize to a bitstream, compressed (better bandwidth usage)

Parameters:

  `[out]` | bs | Bitstream to serialize to
  `[in]` | languageId | languageId to pass to the StringCompressor class
  `[in]` | writeLanguageId | encode the languageId variable in the stream. If false, 0 is assumed, and DeserializeCompressed will not look for this variable in the stream (saves bandwidth)

Precondition:
  StringCompressor::AddReference must have been called to instantiate the class (Happens automatically from RakPeer::Startup())

The documentation for this class was generated from the following file:

- d:/RakNet-3.x/Source/RakString.h