ICU 66.0.1  66.0.1
Public Member Functions | Static Public Attributes
icu::StringPiece Class Reference

A string-like object that points to a sized piece of memory. More...

#include <stringpiece.h>

Inheritance diagram for icu::StringPiece:
icu::UMemory

Public Member Functions

 StringPiece ()
 Default constructor, creates an empty StringPiece. More...
 
 StringPiece (const char *str)
 Constructs from a NUL-terminated const char * pointer. More...
 
 StringPiece (const std::string &str)
 Constructs from a std::string. More...
 
template<typename T , typename = typename std::enable_if< std::is_same<decltype(T().data()), const char*>::value && std::is_same<decltype(T().size()), size_t>::value>::type>
 StringPiece (T str)
 Constructs from some other implementation of a string piece class, from any C++ record type that has these two methods: More...
 
 StringPiece (const char *offset, int32_t len)
 Constructs from a const char * pointer and a specified length. More...
 
 StringPiece (const StringPiece &x, int32_t pos)
 Substring of another StringPiece. More...
 
 StringPiece (const StringPiece &x, int32_t pos, int32_t len)
 Substring of another StringPiece. More...
 
const char * data () const
 Returns the string pointer. More...
 
int32_t size () const
 Returns the string length. More...
 
int32_t length () const
 Returns the string length. More...
 
UBool empty () const
 Returns whether the string is empty. More...
 
void clear ()
 Sets to an empty string. More...
 
void set (const char *xdata, int32_t len)
 Reset the stringpiece to refer to new data. More...
 
void set (const char *str)
 Reset the stringpiece to refer to new data. More...
 
void remove_prefix (int32_t n)
 Removes the first n string units. More...
 
void remove_suffix (int32_t n)
 Removes the last n string units. More...
 
StringPiece substr (int32_t pos, int32_t len=npos) const
 Returns a substring of this StringPiece. More...
 

Static Public Attributes

static const int32_t npos
 Maximum integer, used as a default value for substring methods. More...
 

Detailed Description

A string-like object that points to a sized piece of memory.

We provide non-explicit singleton constructors so users can pass in a "const char*" or a "string" wherever a "StringPiece" is expected.

Functions or methods may use StringPiece parameters to accept either a "const char*" or a "string" value that will be implicitly converted to a StringPiece.

Systematic usage of StringPiece is encouraged as it will reduce unnecessary conversions from "const char*" to "string" and back again.

Stable:
ICU 4.2

Definition at line 60 of file stringpiece.h.

Constructor & Destructor Documentation

◆ StringPiece() [1/7]

icu::StringPiece::StringPiece ( )
inline

Default constructor, creates an empty StringPiece.

Stable:
ICU 4.2

Definition at line 70 of file stringpiece.h.

◆ StringPiece() [2/7]

icu::StringPiece::StringPiece ( const char *  str)

Constructs from a NUL-terminated const char * pointer.

Parameters
stra NUL-terminated const char * pointer
Stable:
ICU 4.2

◆ StringPiece() [3/7]

icu::StringPiece::StringPiece ( const std::string &  str)
inline

Constructs from a std::string.

Stable:
ICU 4.2

Definition at line 81 of file stringpiece.h.

◆ StringPiece() [4/7]

template<typename T , typename = typename std::enable_if< std::is_same<decltype(T().data()), const char*>::value && std::is_same<decltype(T().size()), size_t>::value>::type>
icu::StringPiece::StringPiece ( str)
inline

Constructs from some other implementation of a string piece class, from any C++ record type that has these two methods:

struct OtherStringPieceClass {
const char* data();
size_t size();
};

The other string piece class will typically be std::string_view from C++17 or absl::string_view from Abseil.

Parameters
strthe other string piece
Draft:
This API may be changed in the future versions and was introduced in ICU 65

Definition at line 107 of file stringpiece.h.

◆ StringPiece() [5/7]

icu::StringPiece::StringPiece ( const char *  offset,
int32_t  len 
)
inline

Constructs from a const char * pointer and a specified length.

Parameters
offseta const char * pointer (need not be terminated)
lenthe length of the string; must be non-negative
Stable:
ICU 4.2

Definition at line 116 of file stringpiece.h.

◆ StringPiece() [6/7]

icu::StringPiece::StringPiece ( const StringPiece x,
int32_t  pos 
)

Substring of another StringPiece.

Parameters
xthe other StringPiece
posstart position in x; must be non-negative and <= x.length().
Stable:
ICU 4.2

◆ StringPiece() [7/7]

icu::StringPiece::StringPiece ( const StringPiece x,
int32_t  pos,
int32_t  len 
)

Substring of another StringPiece.

Parameters
xthe other StringPiece
posstart position in x; must be non-negative and <= x.length().
lenlength of the substring; must be non-negative and will be pinned to at most x.length() - pos.
Stable:
ICU 4.2

Member Function Documentation

◆ clear()

void icu::StringPiece::clear ( )
inline

Sets to an empty string.

Stable:
ICU 4.2

Definition at line 168 of file stringpiece.h.

References NULL.

◆ data()

const char* icu::StringPiece::data ( ) const
inline

Returns the string pointer.

May be NULL if it is empty.

data() may return a pointer to a buffer with embedded NULs, and the returned buffer may or may not be null terminated. Therefore it is typically a mistake to pass data() to a routine that expects a NUL terminated string.

Returns
the string pointer
Stable:
ICU 4.2

Definition at line 144 of file stringpiece.h.

◆ empty()

UBool icu::StringPiece::empty ( ) const
inline

Returns whether the string is empty.

Returns
TRUE if the string is empty
Stable:
ICU 4.2

Definition at line 162 of file stringpiece.h.

◆ length()

int32_t icu::StringPiece::length ( void  ) const
inline

Returns the string length.

Same as size().

Returns
the string length
Stable:
ICU 4.2

Definition at line 156 of file stringpiece.h.

◆ remove_prefix()

void icu::StringPiece::remove_prefix ( int32_t  n)
inline

Removes the first n string units.

Parameters
nprefix length, must be non-negative and <=length()
Stable:
ICU 4.2

Definition at line 190 of file stringpiece.h.

◆ remove_suffix()

void icu::StringPiece::remove_suffix ( int32_t  n)
inline

Removes the last n string units.

Parameters
nsuffix length, must be non-negative and <=length()
Stable:
ICU 4.2

Definition at line 205 of file stringpiece.h.

◆ set() [1/2]

void icu::StringPiece::set ( const char *  xdata,
int32_t  len 
)
inline

Reset the stringpiece to refer to new data.

Parameters
xdatapointer the new string data. Need not be nul terminated.
lenthe length of the new data
Stable:
ICU 4.8

Definition at line 176 of file stringpiece.h.

◆ set() [2/2]

void icu::StringPiece::set ( const char *  str)

Reset the stringpiece to refer to new data.

Parameters
stra pointer to a NUL-terminated string.
Stable:
ICU 4.8

◆ size()

int32_t icu::StringPiece::size ( ) const
inline

Returns the string length.

Same as length().

Returns
the string length
Stable:
ICU 4.2

Definition at line 150 of file stringpiece.h.

◆ substr()

StringPiece icu::StringPiece::substr ( int32_t  pos,
int32_t  len = npos 
) const
inline

Returns a substring of this StringPiece.

Parameters
posstart position; must be non-negative and <= length().
lenlength of the substring; must be non-negative and will be pinned to at most length() - pos.
Returns
the substring StringPiece
Stable:
ICU 4.2

Definition at line 229 of file stringpiece.h.

References icu::operator==(), and U_EXPORT.

Field Documentation

◆ npos

const int32_t icu::StringPiece::npos
static

Maximum integer, used as a default value for substring methods.

Stable:
ICU 4.2

Definition at line 219 of file stringpiece.h.


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