ICU 76.1: icu::StringPiece Class Reference

ICU 76.1 76.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:

## Public Member Functions
| StringPiece ()
| Default constructor, creates an empty StringPiece.
| StringPiece (const char *str)
| Constructs from a NUL-terminated const char * pointer.
| StringPiece (const char8_t *str)
| Constructs from a NUL-terminated const char8_t * pointer.
| StringPiece (std::nullptr_t p)
| Constructs an empty StringPiece.
| StringPiece (const std::string &str)
| Constructs from a std::string.
| StringPiece (const std::u8string &str)
| Constructs from a std::u8string.
template<typename T , typename = std::enable_if_t< (std::is_same_v<decltype(T().data()), const char*> ) && std::is_same_v<decltype(T().size()), size_t>>>
| StringPiece (T str)
| Constructs from some other implementation of a string piece class, from any C++ record type that has these two methods:
| StringPiece (const char *offset, int32_t len)
| Constructs from a const char * pointer and a specified length.
| StringPiece (const char8_t *str, int32_t len)
| Constructs from a const char8_t * pointer and a specified length.
| StringPiece (const StringPiece &x, int32_t pos)
| Substring of another StringPiece.
| StringPiece (const StringPiece &x, int32_t pos, int32_t len)
| Substring of another StringPiece.
| operator std::string_view () const
| Converts to a std::string_view().
const char * | data () const
| Returns the string pointer.
int32_t | size () const
| Returns the string length.
int32_t | length () const
| Returns the string length.
UBool | empty () const
| Returns whether the string is empty.
void | clear ()
| Sets to an empty string.
void | set (const char *xdata, int32_t len)
| Reset the stringpiece to refer to new data.
void | set (const char *str)
| Reset the stringpiece to refer to new data.
void | set (const char8_t *xdata, int32_t len)
| Resets the stringpiece to refer to new data.
void | set (const char8_t *str)
| Resets the stringpiece to refer to new data.
void | remove_prefix (int32_t n)
| Removes the first n string units.
void | remove_suffix (int32_t n)
| Removes the last n string units.
int32_t | find (StringPiece needle, int32_t offset)
| Searches the StringPiece for the given search string (needle);.
int32_t | compare (StringPiece other)
| Compares this StringPiece with the other StringPiece, with semantics similar to std::string::compare().
StringPiece | substr (int32_t pos, int32_t len=npos) const
| Returns a substring of this StringPiece.

## Static Public Attributes
static const int32_t | npos
| Maximum integer, used as a default value for substring methods.

## 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 61 of file stringpiece.h.

## Constructor & Destructor Documentation

## ◆ StringPiece() [1/11]

icu::StringPiece::StringPiece | ( |  | ) |
| inline

Default constructor, creates an empty StringPiece.

Stable
  ICU 4.2

Definition at line 71 of file stringpiece.h.

## ◆ StringPiece() [2/11]

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

Constructs from a NUL-terminated const char * pointer.

Parameters

  str | a NUL-terminated const char * pointer

Stable
  ICU 4.2

## ◆ StringPiece() [3/11]

icu::StringPiece::StringPiece | ( | const char8_t * | str | ) |
| inline

Constructs from a NUL-terminated const char8_t * pointer.

Parameters

  str | a NUL-terminated const char8_t * pointer

Stable
  ICU 67

Definition at line 85 of file stringpiece.h.

## ◆ StringPiece() [4/11]

icu::StringPiece::StringPiece | ( | std::nullptr_t | p | ) |
| inline

Constructs an empty StringPiece.

Needed for type disambiguation from multiple other overloads.

Parameters

  p | nullptr

Stable
  ICU 67

Definition at line 93 of file stringpiece.h.

## ◆ StringPiece() [5/11]

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

Constructs from a std::string.

Stable
  ICU 4.2

Definition at line 99 of file stringpiece.h.

## ◆ StringPiece() [6/11]

icu::StringPiece::StringPiece | ( | const std::u8string & | str | ) |
| inline

Constructs from a std::u8string.

Stable
  ICU 67

Definition at line 106 of file stringpiece.h.

## ◆ StringPiece() [7/11]

template<typename T , typename = std::enable_if_t< (std::is_same_v<decltype(T().data()), const char*> ) && std::is_same_v<decltype(T().size()), size_t>>>

icu::StringPiece::StringPiece | ( | T | 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(); // or const char8_t*
size_t size();
};

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

Starting with C++20, data() may also return a const char8_t* pointer, as from std::u8string_view.

Parameters

  str | the other string piece

Stable
  ICU 65

Definition at line 141 of file stringpiece.h.

## ◆ StringPiece() [8/11]

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

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

Parameters

  offset | a const char * pointer (need not be terminated)
  len | the length of the string; must be non-negative

Stable
  ICU 4.2

Definition at line 151 of file stringpiece.h.

## ◆ StringPiece() [9/11]

icu::StringPiece::StringPiece | ( | const char8_t * | str,
|  | int32_t | len )
| inline

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

Parameters

  str | a const char8_t * pointer (need not be terminated)
  len | the length of the string; must be non-negative

Stable
  ICU 67

Definition at line 159 of file stringpiece.h.

## ◆ StringPiece() [10/11]

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

Substring of another StringPiece.

Parameters

  x | the other StringPiece
  pos | start position in x; must be non-negative and <= x.length().

Stable
  ICU 4.2

## ◆ StringPiece() [11/11]

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

Substring of another StringPiece.

Parameters

  x | the other StringPiece
  pos | start position in x; must be non-negative and <= x.length().
  len | length 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 224 of file stringpiece.h.

## ◆ compare()

int32_t icu::StringPiece::compare | ( | StringPiece | other | ) |

Compares this StringPiece with the other StringPiece, with semantics similar to std::string::compare().

Parameters

  other | The string to compare to.

Returns
  below zero if this < other; above zero if this > other; 0 if this == other.

Stable
  ICU 67

## ◆ data()

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

Returns the string pointer.

May be nullptr 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 200 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 218 of file stringpiece.h.

## ◆ find()

int32_t icu::StringPiece::find | ( | StringPiece | needle,
|  | int32_t | offset )

Searches the StringPiece for the given search string (needle);.

Parameters

  needle | The string for which to search.
  offset | Where to start searching within this string (haystack).

Returns
  The offset of needle in haystack, or -1 if not found.

Stable
  ICU 67

## ◆ length()

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

Returns the string length.

Same as size().

Returns
  the string length

Stable
  ICU 4.2

Definition at line 212 of file stringpiece.h.

## ◆ operator std::string_view()

icu::StringPiece::operator std::string_view | ( |  | ) | const
| inline

Converts to a std::string_view().

Internal
  Do not use. This API is for internal use only.

Definition at line 185 of file stringpiece.h.

## ◆ remove_prefix()

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

Removes the first n string units.

Parameters

  n | prefix length, must be non-negative and <=length()

Stable
  ICU 4.2

Definition at line 267 of file stringpiece.h.

## ◆ remove_suffix()

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

Removes the last n string units.

Parameters

  n | suffix length, must be non-negative and <=length()

Stable
  ICU 4.2

Definition at line 282 of file stringpiece.h.

## ◆ set() [1/4]

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

Reset the stringpiece to refer to new data.

Parameters

  str | a pointer to a NUL-terminated string.

Stable
  ICU 4.8

## ◆ set() [2/4]

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

Reset the stringpiece to refer to new data.

Parameters

  xdata | pointer the new string data. Need not be nul terminated.
  len | the length of the new data

Stable
  ICU 4.8

Definition at line 232 of file stringpiece.h.

## ◆ set() [3/4]

void icu::StringPiece::set | ( | const char8_t * | str | ) |
| inline

Resets the stringpiece to refer to new data.

Parameters

  str | a pointer to a NUL-terminated string.

Stable
  ICU 67

Definition at line 257 of file stringpiece.h.

## ◆ set() [4/4]

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

Resets the stringpiece to refer to new data.

Parameters

  xdata | pointer the new string data. Need not be NUL-terminated.
  len | the length of the new data

Stable
  ICU 67

Definition at line 248 of file stringpiece.h.

## ◆ 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 206 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

  pos | start position; must be non-negative and <= length().
  len | length 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 324 of file stringpiece.h.

## 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 314 of file stringpiece.h.

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

- common/unicode/stringpiece.h