RapidJSON: rapidjson::GenericValue< Encoding, Allocator > 模板类 参考

类 | Public 类型 | 所有成员列表
rapidjson::GenericValue< Encoding, Allocator > 模板类 参考

Represents a JSON value. Use Value for UTF8 encoding and default allocator. 更多...

`#include <document.h>`

## Public 类型
typedef GenericMember< Encoding, Allocator > | Member
| Name-value pair in an object.
typedef Encoding | EncodingType
| Encoding type from template parameter.
typedef Allocator | AllocatorType
| Allocator type from template parameter.
typedef Encoding::Ch | Ch
| Character type derived from Encoding.
typedef GenericStringRef< Ch > | StringRefType
| Reference to a constant string
typedef GenericMemberIterator< false, Encoding, Allocator >::Iterator | MemberIterator
| Member iterator for iterating in object.
typedef GenericMemberIterator< true, Encoding, Allocator >::Iterator | ConstMemberIterator
| Constant member iterator for iterating in object.
typedef GenericValue * | ValueIterator
| Value iterator for iterating in array.
typedef const GenericValue * | ConstValueIterator
| Constant value iterator for iterating in array.
typedef GenericValue< Encoding, Allocator > | ValueType
| Value type of itself.
typedef GenericArray< false, ValueType > | Array
typedef GenericArray< true, ValueType > | ConstArray
typedef GenericObject< false, ValueType > | Object
typedef GenericObject< true, ValueType > | ConstObject

## Public 成员函数
Type
Type | GetType () const
bool | IsNull () const
bool | IsFalse () const
bool | IsTrue () const
bool | IsBool () const
bool | IsObject () const
bool | IsArray () const
bool | IsNumber () const
bool | IsInt () const
bool | IsUint () const
bool | IsInt64 () const
bool | IsUint64 () const
bool | IsDouble () const
bool | IsString () const
bool | IsLosslessDouble () const
bool | IsFloat () const
bool | IsLosslessFloat () const
Null
GenericValue & | SetNull ()
Bool
bool | GetBool () const
| Set boolean value
GenericValue & | SetBool (bool b)
Object
GenericValue & | SetObject ()
| Set this value as an empty object. 更多...
SizeType | MemberCount () const
| Get the number of members in the object.
SizeType | MemberCapacity () const
| Get the capacity of object.
bool | ObjectEmpty () const
| Check whether the object is empty.
template<typename T >
GenericValue & | operator[] (T *name)
| Get a value from an object associated with the name. 更多...
template<typename T >
const GenericValue & | operator[] (T *name) const
template<typename SourceAllocator >
GenericValue & | operator[] (const GenericValue< Encoding, SourceAllocator > &name)
| Get a value from an object associated with the name. 更多...
template<typename SourceAllocator >
const GenericValue & | operator[] (const GenericValue< Encoding, SourceAllocator > &name) const
GenericValue & | operator[] (const std::basic_string< Ch > &name)
| Get a value from an object associated with name (string object).
const GenericValue & | operator[] (const std::basic_string< Ch > &name) const
ConstMemberIterator | MemberBegin () const
| Const member iterator 更多...
ConstMemberIterator | MemberEnd () const
| Const past-the-end member iterator 更多...
MemberIterator | MemberBegin ()
| Member iterator 更多...
MemberIterator | MemberEnd ()
| Past-the-end member iterator 更多...
GenericValue & | MemberReserve (SizeType newCapacity, Allocator &allocator)
| Request the object to have enough capacity to store members. 更多...
bool | HasMember (const Ch *name) const
| Check whether a member exists in the object. 更多...
bool | HasMember (const std::basic_string< Ch > &name) const
| Check whether a member exists in the object with string object. 更多...
template<typename SourceAllocator >
bool | HasMember (const GenericValue< Encoding, SourceAllocator > &name) const
| Check whether a member exists in the object with GenericValue name. 更多...
MemberIterator | FindMember (const Ch *name)
| Find member by name. 更多...
ConstMemberIterator | FindMember (const Ch *name) const
template<typename SourceAllocator >
MemberIterator | FindMember (const GenericValue< Encoding, SourceAllocator > &name)
| Find member by name. 更多...
template<typename SourceAllocator >
ConstMemberIterator | FindMember (const GenericValue< Encoding, SourceAllocator > &name) const
MemberIterator | FindMember (const std::basic_string< Ch > &name)
| Find member by string object name. 更多...
ConstMemberIterator | FindMember (const std::basic_string< Ch > &name) const
GenericValue & | AddMember (GenericValue &name, GenericValue &value, Allocator &allocator)
| Add a member (name-value pair) to the object. 更多...
GenericValue & | AddMember (GenericValue &name, StringRefType value, Allocator &allocator)
| Add a constant string value as member (name-value pair) to the object. 更多...
GenericValue & | AddMember (GenericValue &name, std::basic_string< Ch > &value, Allocator &allocator)
| Add a string object as member (name-value pair) to the object. 更多...
template<typename T >
GenericValue & | AddMember (GenericValue &name, T value, Allocator &allocator)
| Add any primitive value as member (name-value pair) to the object. 更多...
GenericValue & | AddMember (StringRefType name, GenericValue &value, Allocator &allocator)
| Add a member (name-value pair) to the object. 更多...
GenericValue & | AddMember (StringRefType name, StringRefType value, Allocator &allocator)
| Add a constant string value as member (name-value pair) to the object. 更多...
template<typename T >
GenericValue & | AddMember (StringRefType name, T value, Allocator &allocator)
| Add any primitive value as member (name-value pair) to the object. 更多...
void | RemoveAllMembers ()
| Remove all members in the object. 更多...
bool | RemoveMember (const Ch *name)
| Remove a member in object by its name. 更多...
bool | RemoveMember (const std::basic_string< Ch > &name)
template<typename SourceAllocator >
bool | RemoveMember (const GenericValue< Encoding, SourceAllocator > &name)
MemberIterator | RemoveMember (MemberIterator m)
| Remove a member in object by iterator. 更多...
MemberIterator | EraseMember (ConstMemberIterator pos)
| Remove a member from an object by iterator. 更多...
MemberIterator | EraseMember (ConstMemberIterator first, ConstMemberIterator last)
| Remove members in the range [first, last) from an object. 更多...
bool | EraseMember (const Ch *name)
| Erase a member in object by its name. 更多...
bool | EraseMember (const std::basic_string< Ch > &name)
template<typename SourceAllocator >
bool | EraseMember (const GenericValue< Encoding, SourceAllocator > &name)
Object | GetObject ()
ConstObject | GetObject () const
Number
int | GetInt () const
unsigned | GetUint () const
int64_t | GetInt64 () const
uint64_t | GetUint64 () const
double | GetDouble () const
| Get the value as double type. 更多...
float | GetFloat () const
| Get the value as float type. 更多...
GenericValue & | SetInt (int i)
GenericValue & | SetUint (unsigned u)
GenericValue & | SetInt64 (int64_t i64)
GenericValue & | SetUint64 (uint64_t u64)
GenericValue & | SetDouble (double d)
GenericValue & | SetFloat (float f)
String
const Ch * | GetString () const
SizeType | GetStringLength () const
| Get the length of string. 更多...
GenericValue & | SetString (const Ch *s, SizeType length)
| Set this value as a string without copying source string. 更多...
GenericValue & | SetString (StringRefType s)
| Set this value as a string without copying source string. 更多...
GenericValue & | SetString (const Ch *s, SizeType length, Allocator &allocator)
| Set this value as a string by copying from source string. 更多...
GenericValue & | SetString (const Ch *s, Allocator &allocator)
| Set this value as a string by copying from source string. 更多...
GenericValue & | SetString (StringRefType s, Allocator &allocator)
| Set this value as a string by copying from source string. 更多...
GenericValue & | SetString (const std::basic_string< Ch > &s, Allocator &allocator)
| Set this value as a string by copying from source string. 更多...

## Constructors and destructor.
| GenericValue () RAPIDJSON_NOEXCEPT
| Default constructor creates a null value.
| GenericValue (Type type) RAPIDJSON_NOEXCEPT
| Constructor with JSON value type. 更多...
template<typename SourceAllocator >
| GenericValue (const GenericValue< Encoding, SourceAllocator > &rhs, Allocator &allocator, bool copyConstStrings=false)
| Explicit copy constructor (with allocator) 更多...
| GenericValue (bool b) RAPIDJSON_NOEXCEPT
| Constructor for boolean value. 更多...
| GenericValue (int i) RAPIDJSON_NOEXCEPT
| Constructor for int value.
| GenericValue (unsigned u) RAPIDJSON_NOEXCEPT
| Constructor for unsigned value.
| GenericValue (int64_t i64) RAPIDJSON_NOEXCEPT
| Constructor for int64_t value.
| GenericValue (uint64_t u64) RAPIDJSON_NOEXCEPT
| Constructor for uint64_t value.
| GenericValue (double d) RAPIDJSON_NOEXCEPT
| Constructor for double value.
| GenericValue (float f) RAPIDJSON_NOEXCEPT
| Constructor for float value.
| GenericValue (const Ch *s, SizeType length) RAPIDJSON_NOEXCEPT
| Constructor for constant string (i.e. do not make a copy of string)
| GenericValue (StringRefType s) RAPIDJSON_NOEXCEPT
| Constructor for constant string (i.e. do not make a copy of string)
| GenericValue (const Ch *s, SizeType length, Allocator &allocator)
| Constructor for copy-string (i.e. do make a copy of string)
| GenericValue (const Ch *s, Allocator &allocator)
| Constructor for copy-string (i.e. do make a copy of string)
| GenericValue (const std::basic_string< Ch > &s, Allocator &allocator)
| Constructor for copy-string from a string object (i.e. do make a copy of string) 更多...
| GenericValue (Array a) RAPIDJSON_NOEXCEPT
| Constructor for Array. 更多...
| GenericValue (Object o) RAPIDJSON_NOEXCEPT
| Constructor for Object. 更多...
| ~GenericValue ()
| Destructor. 更多...

## Assignment operators
void | swap (GenericValue &a, GenericValue &b) RAPIDJSON_NOEXCEPT
| free-standing swap function helper 更多...
GenericValue & | operator= (GenericValue &rhs) RAPIDJSON_NOEXCEPT
| Assignment with move semantics. 更多...
GenericValue & | operator= (StringRefType str) RAPIDJSON_NOEXCEPT
| Assignment of constant string reference (no copy) 更多...
template<typename T >
GenericValue & | operator= (T value)
| Assignment with primitive types. 更多...
template<typename SourceAllocator >
GenericValue & | CopyFrom (const GenericValue< Encoding, SourceAllocator > &rhs, Allocator &allocator, bool copyConstStrings=false)
| Deep-copy assignment from Value 更多...
GenericValue & | Swap (GenericValue &other) RAPIDJSON_NOEXCEPT
| Exchange the contents of this value with those of other. 更多...
GenericValue & | Move () RAPIDJSON_NOEXCEPT
| Prepare Value for move semantics 更多...

## Equal-to and not-equal-to operators
template<typename T >
bool | operator== (const T &lhs, const GenericValue &rhs)
| Equal-to operator with arbitrary types (symmetric version) 更多...
template<typename T >
bool | operator!= (const T &lhs, const GenericValue &rhs)
| Not-Equal-to operator with arbitrary types (symmetric version) 更多...
template<typename SourceAllocator >
bool | operator== (const GenericValue< Encoding, SourceAllocator > &rhs) const
| Equal-to operator 更多...
bool | operator== (const Ch *rhs) const
| Equal-to operator with const C-string pointer
bool | operator== (const std::basic_string< Ch > &rhs) const
| Equal-to operator with string object 更多...
template<typename T >
bool | operator== (const T &rhs) const
| Equal-to operator with primitive types 更多...
template<typename SourceAllocator >
bool | operator!= (const GenericValue< Encoding, SourceAllocator > &rhs) const
| Not-equal-to operator 更多...
bool | operator!= (const Ch *rhs) const
| Not-equal-to operator with const C-string pointer
template<typename T >
bool | operator!= (const T &rhs) const
| Not-equal-to operator with arbitrary types 更多...

## Array
template<typename , typename >
class | GenericValue
template<typename , typename , typename >
class | GenericDocument
GenericValue & | SetArray ()
| Set this value as an empty array. 更多...
SizeType | Size () const
| Get the number of elements in array.
SizeType | Capacity () const
| Get the capacity of array.
bool | Empty () const
| Check whether the array is empty.
void | Clear ()
| Remove all elements in the array. 更多...
GenericValue & | operator[] (SizeType index)
| Get an element from array by index. 更多...
const GenericValue & | operator[] (SizeType index) const
ValueIterator | Begin ()
| Element iterator 更多...
ValueIterator | End ()
| Past-the-end element iterator 更多...
ConstValueIterator | Begin () const
| Constant element iterator 更多...
ConstValueIterator | End () const
| Constant past-the-end element iterator 更多...
GenericValue & | Reserve (SizeType newCapacity, Allocator &allocator)
| Request the array to have enough capacity to store elements. 更多...
GenericValue & | PushBack (GenericValue &value, Allocator &allocator)
| Append a GenericValue at the end of the array. 更多...
GenericValue & | PushBack (StringRefType value, Allocator &allocator)
| Append a constant string reference at the end of the array. 更多...
template<typename T >
GenericValue & | PushBack (T value, Allocator &allocator)
| Append a primitive value at the end of the array. 更多...
GenericValue & | PopBack ()
| Remove the last element in the array. 更多...
ValueIterator | Erase (ConstValueIterator pos)
| Remove an element of array by iterator. 更多...
ValueIterator | Erase (ConstValueIterator first, ConstValueIterator last)
| Remove elements in the range [first, last) of the array. 更多...
Array | GetArray ()
ConstArray | GetArray () const
template<typename T >
bool | Is () const
| Templated version for checking whether this value is type T. 更多...
template<typename T >
T | Get () const
template<typename T >
T | Get ()
template<typename T >
ValueType & | Set (const T &data)
template<typename T >
ValueType & | Set (const T &data, AllocatorType &allocator)
template<typename Handler >
bool | Accept (Handler &handler) const
| Generate events of this value to a Handler. 更多...

## 详细描述

### template<typename Encoding, typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>
class rapidjson::GenericValue< Encoding, Allocator >

Represents a JSON value. Use Value for UTF8 encoding and default allocator.

A JSON value can be one of 7 types. This class is a variant type supporting these types.

Use the Value if UTF8 and default allocator

模板参数

  Encoding | Encoding of the value. (Even non-string values need to have the same encoding in a document)
  Allocator | Allocator type for allocating memory of object, array and string.

## 构造及析构函数说明

## ◆ GenericValue() [1/6]

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>

rapidjson::GenericValue< Encoding, Allocator >::GenericValue | ( | Type | type | ) |
| inlineexplicit

Constructor with JSON value type.

This creates a Value of specified type with default content.

参数

  type | Type of the value.

注解
  Default content for number is zero.

## ◆ GenericValue() [2/6]

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>
template<typename SourceAllocator >

rapidjson::GenericValue< Encoding, Allocator >::GenericValue | ( | const GenericValue< Encoding, SourceAllocator > & | rhs,
|  | Allocator & | allocator,
|  | bool | copyConstStrings = `false`
| ) |  |
| inline

Explicit copy constructor (with allocator)

Creates a copy of a Value by using the given Allocator

模板参数

  SourceAllocator | allocator of `rhs`

参数

  rhs | Value to copy from (read-only)
  allocator | Allocator for allocating copied elements and buffers. Commonly use GenericDocument::GetAllocator().
  copyConstStrings | Force copying of constant strings (e.g. referencing an in-situ buffer)

参见
  CopyFrom()

## ◆ GenericValue() [3/6]

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>

rapidjson::GenericValue< Encoding, Allocator >::GenericValue | ( | bool | b | ) |
| inlineexplicit

Constructor for boolean value.

参数

  b | Boolean value

注解
  This constructor is limited to real boolean values and rejects implicitly converted types like arbitrary pointers. Use an explicit cast to `bool`, if you want to construct a boolean JSON value in such cases.

## ◆ GenericValue() [4/6]

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>

rapidjson::GenericValue< Encoding, Allocator >::GenericValue | ( | const std::basic_string< Ch > & | s,
|  | Allocator & | allocator
| ) |  |
| inline

Constructor for copy-string from a string object (i.e. do make a copy of string)

注解
  Requires the definition of the preprocessor symbol RAPIDJSON_HAS_STDSTRING.

## ◆ GenericValue() [5/6]

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>

rapidjson::GenericValue< Encoding, Allocator >::GenericValue | ( | Array | a | ) |
| inline

Constructor for Array.

参数

  a | An array obtained by `GetArray()`.

注解
  `Array` is always pass-by-value.
  the source array is moved into this value and the sourec array becomes empty.

## ◆ GenericValue() [6/6]

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>

rapidjson::GenericValue< Encoding, Allocator >::GenericValue | ( | Object | o | ) |
| inline

Constructor for Object.

参数

  o | An object obtained by `GetObject()`.

注解
  `Object` is always pass-by-value.
  the source object is moved into this value and the sourec object becomes empty.

## ◆ ~GenericValue()

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>

rapidjson::GenericValue< Encoding, Allocator >::~GenericValue | ( |  | ) |
| inline

Destructor.

Need to destruct elements of array, members of object, or copy-string.

## 成员函数说明

## ◆ Accept()

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>
template<typename Handler >

bool rapidjson::GenericValue< Encoding, Allocator >::Accept | ( | Handler & | handler | ) | const
| inline

Generate events of this value to a Handler.

This function adopts the GoF visitor pattern. Typical usage is to output this JSON value as JSON text via Writer, which is a Handler. It can also be used to deep clone this value via GenericDocument, which is also a Handler.

模板参数

  Handler | type of handler.

参数

  handler | An object implementing concept Handler.

## ◆ AddMember() [1/7]

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>

GenericValue& rapidjson::GenericValue< Encoding, Allocator >::AddMember | ( | GenericValue< Encoding, Allocator > & | name,
|  | GenericValue< Encoding, Allocator > & | value,
|  | Allocator & | allocator
| ) |  |
| inline

Add a member (name-value pair) to the object.

参数

  name | A string value as name of member.
  value | Value of any type.
  allocator | Allocator for reallocating memory. It must be the same one as used before. Commonly use GenericDocument::GetAllocator().

返回
  The value itself for fluent API.

注解
  The ownership of `name` and `value` will be transferred to this object on success.

前置条件
  IsObject() && name.IsString()

后置条件
  name.IsNull() && value.IsNull()

注解
  Amortized Constant time complexity.

## ◆ AddMember() [2/7]

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>

GenericValue& rapidjson::GenericValue< Encoding, Allocator >::AddMember | ( | GenericValue< Encoding, Allocator > & | name,
|  | std::basic_string< Ch > & | value,
|  | Allocator & | allocator
| ) |  |
| inline

Add a string object as member (name-value pair) to the object.

参数

  name | A string value as name of member.
  value | constant string reference as value of member.
  allocator | Allocator for reallocating memory. It must be the same one as used before. Commonly use GenericDocument::GetAllocator().

返回
  The value itself for fluent API.

前置条件
  IsObject()

注解
  This overload is needed to avoid clashes with the generic primitive type AddMember(GenericValue&,T,Allocator&) overload below.
  Amortized Constant time complexity.

## ◆ AddMember() [3/7]

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>

GenericValue& rapidjson::GenericValue< Encoding, Allocator >::AddMember | ( | GenericValue< Encoding, Allocator > & | name,
|  | StringRefType | value,
|  | Allocator & | allocator
| ) |  |
| inline

Add a constant string value as member (name-value pair) to the object.

参数

  name | A string value as name of member.
  value | constant string reference as value of member.
  allocator | Allocator for reallocating memory. It must be the same one as used before. Commonly use GenericDocument::GetAllocator().

返回
  The value itself for fluent API.

前置条件
  IsObject()

注解
  This overload is needed to avoid clashes with the generic primitive type AddMember(GenericValue&,T,Allocator&) overload below.
  Amortized Constant time complexity.

## ◆ AddMember() [4/7]

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>
template<typename T >

GenericValue& rapidjson::GenericValue< Encoding, Allocator >::AddMember | ( | GenericValue< Encoding, Allocator > & | name,
|  | T | value,
|  | Allocator & | allocator
| ) |  |
| inline

Add any primitive value as member (name-value pair) to the object.

模板参数

  T | Either Type, `int`, `unsigned`, `int64_t`, `uint64_t`

参数

  name | A string value as name of member.
  value | Value of primitive type `T` as value of member
  allocator | Allocator for reallocating memory. Commonly use GenericDocument::GetAllocator().

返回
  The value itself for fluent API.

前置条件
  IsObject()

注解
  The source type `T` explicitly disallows all pointer types, especially (`const`) Ch*. This helps avoiding implicitly referencing character strings with insufficient lifetime, use AddMember(StringRefType, GenericValue&, Allocator&) or AddMember(StringRefType, StringRefType, Allocator&). All other pointer types would implicitly convert to `bool`, use an explicit cast instead, if needed.
  Amortized Constant time complexity.

## ◆ AddMember() [5/7]

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>

GenericValue& rapidjson::GenericValue< Encoding, Allocator >::AddMember | ( | StringRefType | name,
|  | GenericValue< Encoding, Allocator > & | value,
|  | Allocator & | allocator
| ) |  |
| inline

Add a member (name-value pair) to the object.

参数

  name | A constant string reference as name of member.
  value | Value of any type.
  allocator | Allocator for reallocating memory. It must be the same one as used before. Commonly use GenericDocument::GetAllocator().

返回
  The value itself for fluent API.

注解
  The ownership of `value` will be transferred to this object on success.

前置条件
  IsObject()

后置条件
  value.IsNull()

注解
  Amortized Constant time complexity.

## ◆ AddMember() [6/7]

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>

GenericValue& rapidjson::GenericValue< Encoding, Allocator >::AddMember | ( | StringRefType | name,
|  | StringRefType | value,
|  | Allocator & | allocator
| ) |  |
| inline

Add a constant string value as member (name-value pair) to the object.

参数

  name | A constant string reference as name of member.
  value | constant string reference as value of member.
  allocator | Allocator for reallocating memory. It must be the same one as used before. Commonly use GenericDocument::GetAllocator().

返回
  The value itself for fluent API.

前置条件
  IsObject()

注解
  This overload is needed to avoid clashes with the generic primitive type AddMember(StringRefType,T,Allocator&) overload below.
  Amortized Constant time complexity.

## ◆ AddMember() [7/7]

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>
template<typename T >

GenericValue& rapidjson::GenericValue< Encoding, Allocator >::AddMember | ( | StringRefType | name,
|  | T | value,
|  | Allocator & | allocator
| ) |  |
| inline

Add any primitive value as member (name-value pair) to the object.

模板参数

  T | Either Type, `int`, `unsigned`, `int64_t`, `uint64_t`

参数

  name | A constant string reference as name of member.
  value | Value of primitive type `T` as value of member
  allocator | Allocator for reallocating memory. Commonly use GenericDocument::GetAllocator().

返回
  The value itself for fluent API.

前置条件
  IsObject()

注解
  The source type `T` explicitly disallows all pointer types, especially (`const`) Ch*. This helps avoiding implicitly referencing character strings with insufficient lifetime, use AddMember(StringRefType, GenericValue&, Allocator&) or AddMember(StringRefType, StringRefType, Allocator&). All other pointer types would implicitly convert to `bool`, use an explicit cast instead, if needed.
  Amortized Constant time complexity.

## ◆ Begin() [1/2]

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>

ValueIterator rapidjson::GenericValue< Encoding, Allocator >::Begin | ( |  | ) |
| inline

Element iterator

前置条件
  IsArray() == true

## ◆ Begin() [2/2]

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>

ConstValueIterator rapidjson::GenericValue< Encoding, Allocator >::Begin | ( |  | ) | const
| inline

Constant element iterator

前置条件
  IsArray() == true

## ◆ Clear()

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>

void rapidjson::GenericValue< Encoding, Allocator >::Clear | ( |  | ) |
| inline

Remove all elements in the array.

This function do not deallocate memory in the array, i.e. the capacity is unchanged.

注解
  Linear time complexity.

## ◆ CopyFrom()

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>
template<typename SourceAllocator >

GenericValue& rapidjson::GenericValue< Encoding, Allocator >::CopyFrom | ( | const GenericValue< Encoding, SourceAllocator > & | rhs,
|  | Allocator & | allocator,
|  | bool | copyConstStrings = `false`
| ) |  |
| inline

Deep-copy assignment from Value

Assigns a copy of the Value to the current Value object

模板参数

  SourceAllocator | Allocator type of `rhs`

参数

  rhs | Value to copy from (read-only)
  allocator | Allocator to use for copying
  copyConstStrings | Force copying of constant strings (e.g. referencing an in-situ buffer)

## ◆ End() [1/2]

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>

ValueIterator rapidjson::GenericValue< Encoding, Allocator >::End | ( |  | ) |
| inline

Past-the-end element iterator

前置条件
  IsArray() == true

## ◆ End() [2/2]

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>

ConstValueIterator rapidjson::GenericValue< Encoding, Allocator >::End | ( |  | ) | const
| inline

Constant past-the-end element iterator

前置条件
  IsArray() == true

## ◆ Erase() [1/2]

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>

ValueIterator rapidjson::GenericValue< Encoding, Allocator >::Erase | ( | ConstValueIterator | first,
|  | ConstValueIterator | last
| ) |  |
| inline

Remove elements in the range [first, last) of the array.

参数

  first | iterator to the first element to remove
  last | iterator following the last element to remove

前置条件
  IsArray() == true && Begin() <= `first` <= `last` <= End()

返回
  Iterator following the last removed element.

注解
  Linear time complexity.

## ◆ Erase() [2/2]

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>

ValueIterator rapidjson::GenericValue< Encoding, Allocator >::Erase | ( | ConstValueIterator | pos | ) |
| inline

Remove an element of array by iterator.

参数

  pos | iterator to the element to remove

前置条件
  IsArray() == true && Begin() <= `pos` < End()

返回
  Iterator following the removed element. If the iterator pos refers to the last element, the End() iterator is returned.

注解
  Linear time complexity.

## ◆ EraseMember() [1/3]

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>

bool rapidjson::GenericValue< Encoding, Allocator >::EraseMember | ( | const Ch * | name | ) |
| inline

Erase a member in object by its name.

参数

  name | Name of member to be removed.

返回
  Whether the member existed.

注解
  Linear time complexity.

## ◆ EraseMember() [2/3]

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>

MemberIterator rapidjson::GenericValue< Encoding, Allocator >::EraseMember | ( | ConstMemberIterator | first,
|  | ConstMemberIterator | last
| ) |  |
| inline

Remove members in the range [first, last) from an object.

参数

  first | iterator to the first member to remove
  last | iterator following the last member to remove

前置条件
  IsObject() == true && MemberBegin() <= `first` <= `last` <= MemberEnd()

返回
  Iterator following the last removed element.

注解
  This function preserves the relative order of the remaining object members.
  Linear time complexity.

## ◆ EraseMember() [3/3]

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>

MemberIterator rapidjson::GenericValue< Encoding, Allocator >::EraseMember | ( | ConstMemberIterator | pos | ) |
| inline

Remove a member from an object by iterator.

参数

  pos | iterator to the member to remove

前置条件
  IsObject() == true && MemberBegin() <= `pos` < MemberEnd()

返回
  Iterator following the removed element. If the iterator `pos` refers to the last element, the MemberEnd() iterator is returned.

注解
  This function preserves the relative order of the remaining object members. If you do not need this, use the more efficient RemoveMember(MemberIterator).
  Linear time complexity.

## ◆ FindMember() [1/3]

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>

MemberIterator rapidjson::GenericValue< Encoding, Allocator >::FindMember | ( | const Ch * | name | ) |
| inline

Find member by name.

参数

  name | Member name to be searched.

前置条件
  IsObject() == true

返回
  Iterator to member, if it exists. Otherwise returns MemberEnd().

注解
  Earlier versions of Rapidjson returned a `NULL` pointer, in case the requested member doesn't exist. For consistency with e.g. `std::map`, this has been changed to MemberEnd() now.
  Linear time complexity.

## ◆ FindMember() [2/3]

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>
template<typename SourceAllocator >

MemberIterator rapidjson::GenericValue< Encoding, Allocator >::FindMember | ( | const GenericValue< Encoding, SourceAllocator > & | name | ) |
| inline

Find member by name.

This version is faster because it does not need a StrLen(). It can also handle string with null character.

参数

  name | Member name to be searched.

前置条件
  IsObject() == true

返回
  Iterator to member, if it exists. Otherwise returns MemberEnd().

注解
  Earlier versions of Rapidjson returned a `NULL` pointer, in case the requested member doesn't exist. For consistency with e.g. `std::map`, this has been changed to MemberEnd() now.
  Linear time complexity.

## ◆ FindMember() [3/3]

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>

MemberIterator rapidjson::GenericValue< Encoding, Allocator >::FindMember | ( | const std::basic_string< Ch > & | name | ) |
| inline

Find member by string object name.

参数

  name | Member name to be searched.

前置条件
  IsObject() == true

返回
  Iterator to member, if it exists. Otherwise returns MemberEnd().

## ◆ GetDouble()

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>

double rapidjson::GenericValue< Encoding, Allocator >::GetDouble | ( |  | ) | const
| inline

Get the value as double type.

注解
  If the value is 64-bit integer type, it may lose precision. Use `IsLosslessDouble()` to check whether the converison is lossless.

## ◆ GetFloat()

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>

float rapidjson::GenericValue< Encoding, Allocator >::GetFloat | ( |  | ) | const
| inline

Get the value as float type.

注解
  If the value is 64-bit integer type, it may lose precision. Use `IsLosslessFloat()` to check whether the converison is lossless.

## ◆ GetStringLength()

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>

SizeType rapidjson::GenericValue< Encoding, Allocator >::GetStringLength | ( |  | ) | const
| inline

Get the length of string.

Since rapidjson permits "\\u0000" in the json string, strlen(v.GetString()) may not equal to v.GetStringLength().

## ◆ HasMember() [1/3]

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>

bool rapidjson::GenericValue< Encoding, Allocator >::HasMember | ( | const Ch * | name | ) | const
| inline

Check whether a member exists in the object.

参数

  name | Member name to be searched.

前置条件
  IsObject() == true

返回
  Whether a member with that name exists.

注解
  It is better to use FindMember() directly if you need the obtain the value as well.
  Linear time complexity.

## ◆ HasMember() [2/3]

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>
template<typename SourceAllocator >

bool rapidjson::GenericValue< Encoding, Allocator >::HasMember | ( | const GenericValue< Encoding, SourceAllocator > & | name | ) | const
| inline

Check whether a member exists in the object with GenericValue name.

This version is faster because it does not need a StrLen(). It can also handle string with null character.

参数

  name | Member name to be searched.

前置条件
  IsObject() == true

返回
  Whether a member with that name exists.

注解
  It is better to use FindMember() directly if you need the obtain the value as well.
  Linear time complexity.

## ◆ HasMember() [3/3]

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>

bool rapidjson::GenericValue< Encoding, Allocator >::HasMember | ( | const std::basic_string< Ch > & | name | ) | const
| inline

Check whether a member exists in the object with string object.

参数

  name | Member name to be searched.

前置条件
  IsObject() == true

返回
  Whether a member with that name exists.

注解
  It is better to use FindMember() directly if you need the obtain the value as well.
  Linear time complexity.

## ◆ Is()

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>
template<typename T >

bool rapidjson::GenericValue< Encoding, Allocator >::Is | ( |  | ) | const
| inline

Templated version for checking whether this value is type T.

模板参数

  T | Either `bool`, `int`, `unsigned`, `int64_t`, `uint64_t`, `double`, `float`, `const` `char*`, `std::basic_string<Ch>`

## ◆ MemberBegin() [1/2]

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>

MemberIterator rapidjson::GenericValue< Encoding, Allocator >::MemberBegin | ( |  | ) |
| inline

Member iterator

前置条件
  IsObject() == true

## ◆ MemberBegin() [2/2]

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>

ConstMemberIterator rapidjson::GenericValue< Encoding, Allocator >::MemberBegin | ( |  | ) | const
| inline

Const member iterator

前置条件
  IsObject() == true

## ◆ MemberEnd() [1/2]

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>

MemberIterator rapidjson::GenericValue< Encoding, Allocator >::MemberEnd | ( |  | ) |
| inline

Past-the-end member iterator

前置条件
  IsObject() == true

## ◆ MemberEnd() [2/2]

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>

ConstMemberIterator rapidjson::GenericValue< Encoding, Allocator >::MemberEnd | ( |  | ) | const
| inline

Const past-the-end member iterator

前置条件
  IsObject() == true

## ◆ MemberReserve()

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>

GenericValue& rapidjson::GenericValue< Encoding, Allocator >::MemberReserve | ( | SizeType | newCapacity,
|  | Allocator & | allocator
| ) |  |
| inline

Request the object to have enough capacity to store members.

参数

  newCapacity | The capacity that the object at least need to have.
  allocator | Allocator for reallocating memory. It must be the same one as used before. Commonly use GenericDocument::GetAllocator().

返回
  The value itself for fluent API.

注解
  Linear time complexity.

## ◆ Move()

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>

GenericValue& rapidjson::GenericValue< Encoding, Allocator >::Move | ( |  | ) |
| inline

Prepare Value for move semantics

返回
  *this

## ◆ operator!=() [1/2]

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>
template<typename SourceAllocator >

bool rapidjson::GenericValue< Encoding, Allocator >::operator!= | ( | const GenericValue< Encoding, SourceAllocator > & | rhs | ) | const
| inline

Not-equal-to operator

返回
  !(*this == rhs)

## ◆ operator!=() [2/2]

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>
template<typename T >

bool rapidjson::GenericValue< Encoding, Allocator >::operator!= | ( | const T & | rhs | ) | const
| inline

Not-equal-to operator with arbitrary types

返回
  !(*this == rhs)

## ◆ operator=() [1/3]

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>

GenericValue& rapidjson::GenericValue< Encoding, Allocator >::operator= | ( | GenericValue< Encoding, Allocator > & | rhs | ) |
| inline

Assignment with move semantics.

参数

  rhs | Source of the assignment. It will become a null value after assignment.

## ◆ operator=() [2/3]

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>

GenericValue& rapidjson::GenericValue< Encoding, Allocator >::operator= | ( | StringRefType | str | ) |
| inline

Assignment of constant string reference (no copy)

参数

  str | Constant string reference to be assigned

注解
  This overload is needed to avoid clashes with the generic primitive type assignment overload below.

参见
  GenericStringRef, operator=(T)

## ◆ operator=() [3/3]

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>
template<typename T >

GenericValue& rapidjson::GenericValue< Encoding, Allocator >::operator= | ( | T | value | ) |
| inline

Assignment with primitive types.

模板参数

  T | Either Type, `int`, `unsigned`, `int64_t`, `uint64_t`

参数

  value | The value to be assigned.

注解
  The source type `T` explicitly disallows all pointer types, especially (`const`) Ch*. This helps avoiding implicitly referencing character strings with insufficient lifetime, use SetString(const Ch*, Allocator&) (for copying) or StringRef() (to explicitly mark the pointer as constant) instead. All other pointer types would implicitly convert to `bool`, use SetBool() instead.

## ◆ operator==() [1/3]

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>
template<typename SourceAllocator >

bool rapidjson::GenericValue< Encoding, Allocator >::operator== | ( | const GenericValue< Encoding, SourceAllocator > & | rhs | ) | const
| inline

Equal-to operator

注解
  If an object contains duplicated named member, comparing equality with any object is always `false`.
  Complexity is quadratic in Object's member number and linear for the rest (number of all values in the subtree and total lengths of all strings).

## ◆ operator==() [2/3]

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>

bool rapidjson::GenericValue< Encoding, Allocator >::operator== | ( | const std::basic_string< Ch > & | rhs | ) | const
| inline

Equal-to operator with string object

注解
  Requires the definition of the preprocessor symbol RAPIDJSON_HAS_STDSTRING.

## ◆ operator==() [3/3]

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>
template<typename T >

bool rapidjson::GenericValue< Encoding, Allocator >::operator== | ( | const T & | rhs | ) | const
| inline

Equal-to operator with primitive types

模板参数

  T | Either Type, `int`, `unsigned`, `int64_t`, `uint64_t`, `double`, `true`, `false`

## ◆ operator[]() [1/3]

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>
template<typename SourceAllocator >

GenericValue& rapidjson::GenericValue< Encoding, Allocator >::operator[] | ( | const GenericValue< Encoding, SourceAllocator > & | name | ) |
| inline

Get a value from an object associated with the name.

前置条件
  IsObject() == true

模板参数

  SourceAllocator | Allocator of the `name` value

注解
  Compared to operator[](T*), this version is faster because it does not need a StrLen(). And it can also handle strings with embedded null characters.
  Linear time complexity.

## ◆ operator[]() [2/3]

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>

GenericValue& rapidjson::GenericValue< Encoding, Allocator >::operator[] | ( | SizeType | index | ) |
| inline

Get an element from array by index.

前置条件
  IsArray() == true

参数

  index | Zero-based index of element.

参见
  operator[](T*)

## ◆ operator[]() [3/3]

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>
template<typename T >

GenericValue& rapidjson::GenericValue< Encoding, Allocator >::operator[] | ( | T * | name | ) |
| inline

Get a value from an object associated with the name.

前置条件
  IsObject() == true

模板参数

  T | Either `Ch` or `const` `Ch` (template used for disambiguation with operator[](SizeType))

注解
  In version 0.1x, if the member is not found, this function returns a null value. This makes issue 7. Since 0.2, if the name is not correct, it will assert. If user is unsure whether a member exists, user should use HasMember() first. A better approach is to use FindMember().
  Linear time complexity.

## ◆ PopBack()

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>

GenericValue& rapidjson::GenericValue< Encoding, Allocator >::PopBack | ( |  | ) |
| inline

Remove the last element in the array.

注解
  Constant time complexity.

## ◆ PushBack() [1/3]

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>

GenericValue& rapidjson::GenericValue< Encoding, Allocator >::PushBack | ( | GenericValue< Encoding, Allocator > & | value,
|  | Allocator & | allocator
| ) |  |
| inline

Append a GenericValue at the end of the array.

参数

  value | Value to be appended.
  allocator | Allocator for reallocating memory. It must be the same one as used before. Commonly use GenericDocument::GetAllocator().

前置条件
  IsArray() == true

后置条件
  value.IsNull() == true

返回
  The value itself for fluent API.

注解
  The ownership of `value` will be transferred to this array on success.
  If the number of elements to be appended is known, calls Reserve() once first may be more efficient.
  Amortized constant time complexity.

## ◆ PushBack() [2/3]

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>

GenericValue& rapidjson::GenericValue< Encoding, Allocator >::PushBack | ( | StringRefType | value,
|  | Allocator & | allocator
| ) |  |
| inline

Append a constant string reference at the end of the array.

参数

  value | Constant string reference to be appended.
  allocator | Allocator for reallocating memory. It must be the same one used previously. Commonly use GenericDocument::GetAllocator().

前置条件
  IsArray() == true

返回
  The value itself for fluent API.

注解
  If the number of elements to be appended is known, calls Reserve() once first may be more efficient.
  Amortized constant time complexity.

参见
  GenericStringRef

## ◆ PushBack() [3/3]

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>
template<typename T >

GenericValue& rapidjson::GenericValue< Encoding, Allocator >::PushBack | ( | T | value,
|  | Allocator & | allocator
| ) |  |
| inline

Append a primitive value at the end of the array.

模板参数

  T | Either Type, `int`, `unsigned`, `int64_t`, `uint64_t`

参数

  value | Value of primitive type T to be appended.
  allocator | Allocator for reallocating memory. It must be the same one as used before. Commonly use GenericDocument::GetAllocator().

前置条件
  IsArray() == true

返回
  The value itself for fluent API.

注解
  If the number of elements to be appended is known, calls Reserve() once first may be more efficient.
  The source type `T` explicitly disallows all pointer types, especially (`const`) Ch*. This helps avoiding implicitly referencing character strings with insufficient lifetime, use PushBack(GenericValue&, Allocator&) or PushBack(StringRefType, Allocator&). All other pointer types would implicitly convert to `bool`, use an explicit cast instead, if needed.
  Amortized constant time complexity.

## ◆ RemoveAllMembers()

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>

void rapidjson::GenericValue< Encoding, Allocator >::RemoveAllMembers | ( |  | ) |
| inline

Remove all members in the object.

This function do not deallocate memory in the object, i.e. the capacity is unchanged.

注解
  Linear time complexity.

## ◆ RemoveMember() [1/2]

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>

bool rapidjson::GenericValue< Encoding, Allocator >::RemoveMember | ( | const Ch * | name | ) |
| inline

Remove a member in object by its name.

参数

  name | Name of member to be removed.

返回
  Whether the member existed.

注解
  This function may reorder the object members. Use EraseMember(ConstMemberIterator) if you need to preserve the relative order of the remaining members.
  Linear time complexity.

## ◆ RemoveMember() [2/2]

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>

MemberIterator rapidjson::GenericValue< Encoding, Allocator >::RemoveMember | ( | MemberIterator | m | ) |
| inline

Remove a member in object by iterator.

参数

  m | member iterator (obtained by FindMember() or MemberBegin()).

返回
  the new iterator after removal.

注解
  This function may reorder the object members. Use EraseMember(ConstMemberIterator) if you need to preserve the relative order of the remaining members.
  Constant time complexity.

## ◆ Reserve()

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>

GenericValue& rapidjson::GenericValue< Encoding, Allocator >::Reserve | ( | SizeType | newCapacity,
|  | Allocator & | allocator
| ) |  |
| inline

Request the array to have enough capacity to store elements.

参数

  newCapacity | The capacity that the array at least need to have.
  allocator | Allocator for reallocating memory. It must be the same one as used before. Commonly use GenericDocument::GetAllocator().

返回
  The value itself for fluent API.

注解
  Linear time complexity.

## ◆ SetArray()

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>

GenericValue& rapidjson::GenericValue< Encoding, Allocator >::SetArray | ( |  | ) |
| inline

Set this value as an empty array.

后置条件
  IsArray == true

## ◆ SetBool()

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>

GenericValue& rapidjson::GenericValue< Encoding, Allocator >::SetBool | ( | bool | b | ) |
| inline

后置条件
  IsBool() == true

## ◆ SetObject()

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>

GenericValue& rapidjson::GenericValue< Encoding, Allocator >::SetObject | ( |  | ) |
| inline

Set this value as an empty object.

后置条件
  IsObject() == true

## ◆ SetString() [1/6]

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>

GenericValue& rapidjson::GenericValue< Encoding, Allocator >::SetString | ( | const Ch * | s,
|  | Allocator & | allocator
| ) |  |
| inline

Set this value as a string by copying from source string.

参数

  s | source string.
  allocator | Allocator for allocating copied buffer. Commonly use GenericDocument::GetAllocator().

返回
  The value itself for fluent API.

后置条件
  IsString() == true && GetString() != s && strcmp(GetString(),s) == 0 && GetStringLength() == length

## ◆ SetString() [2/6]

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>

GenericValue& rapidjson::GenericValue< Encoding, Allocator >::SetString | ( | const Ch * | s,
|  | SizeType | length
| ) |  |
| inline

Set this value as a string without copying source string.

This version has better performance with supplied length, and also support string containing null character.

参数

  s | source string pointer.
  length | The length of source string, excluding the trailing null terminator.

返回
  The value itself for fluent API.

后置条件
  IsString() == true && GetString() == s && GetStringLength() == length

参见
  SetString(StringRefType)

## ◆ SetString() [3/6]

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>

GenericValue& rapidjson::GenericValue< Encoding, Allocator >::SetString | ( | const Ch * | s,
|  | SizeType | length,
|  | Allocator & | allocator
| ) |  |
| inline

Set this value as a string by copying from source string.

This version has better performance with supplied length, and also support string containing null character.

参数

  s | source string.
  length | The length of source string, excluding the trailing null terminator.
  allocator | Allocator for allocating copied buffer. Commonly use GenericDocument::GetAllocator().

返回
  The value itself for fluent API.

后置条件
  IsString() == true && GetString() != s && strcmp(GetString(),s) == 0 && GetStringLength() == length

## ◆ SetString() [4/6]

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>

GenericValue& rapidjson::GenericValue< Encoding, Allocator >::SetString | ( | const std::basic_string< Ch > & | s,
|  | Allocator & | allocator
| ) |  |
| inline

Set this value as a string by copying from source string.

参数

  s | source string.
  allocator | Allocator for allocating copied buffer. Commonly use GenericDocument::GetAllocator().

返回
  The value itself for fluent API.

后置条件
  IsString() == true && GetString() != s.data() && strcmp(GetString(),s.data() == 0 && GetStringLength() == s.size()

注解
  Requires the definition of the preprocessor symbol RAPIDJSON_HAS_STDSTRING.

## ◆ SetString() [5/6]

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>

GenericValue& rapidjson::GenericValue< Encoding, Allocator >::SetString | ( | StringRefType | s | ) |
| inline

Set this value as a string without copying source string.

参数

  s | source string reference

返回
  The value itself for fluent API.

后置条件
  IsString() == true && GetString() == s && GetStringLength() == s.length

## ◆ SetString() [6/6]

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>

GenericValue& rapidjson::GenericValue< Encoding, Allocator >::SetString | ( | StringRefType | s,
|  | Allocator & | allocator
| ) |  |
| inline

Set this value as a string by copying from source string.

参数

  s | source string reference
  allocator | Allocator for allocating copied buffer. Commonly use GenericDocument::GetAllocator().

返回
  The value itself for fluent API.

后置条件
  IsString() == true && GetString() != s.s && strcmp(GetString(),s) == 0 && GetStringLength() == length

## ◆ Swap()

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>

GenericValue& rapidjson::GenericValue< Encoding, Allocator >::Swap | ( | GenericValue< Encoding, Allocator > & | other | ) |
| inline

Exchange the contents of this value with those of other.

参数

  other | Another value.

注解
  Constant complexity.

## 友元及相关函数文档

## ◆ operator!=

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>
template<typename T >

bool operator!= | ( | const T & | lhs,
|  | const GenericValue< Encoding, Allocator > & | rhs
| ) |  |
| friend

Not-Equal-to operator with arbitrary types (symmetric version)

返回
  !(rhs == lhs)

## ◆ operator==

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>
template<typename T >

bool operator== | ( | const T & | lhs,
|  | const GenericValue< Encoding, Allocator > & | rhs
| ) |  |
| friend

Equal-to operator with arbitrary types (symmetric version)

返回
  (rhs == lhs)

## ◆ swap

template<typename Encoding , typename Allocator = RAPIDJSON_DEFAULT_ALLOCATOR>

void swap | ( | GenericValue< Encoding, Allocator > & | a,
|  | GenericValue< Encoding, Allocator > & | b
| ) |  |
| friend

free-standing swap function helper

Helper function to enable support for common swap implementation pattern based on `std::swap:`

void swap(MyClass& a, MyClass& b) {
using std::swap;
swap(a.value, b.value);
// ...
}

参见
  Swap()

该类的文档由以下文件生成:

- include/rapidjson/document.h

rapidjson::GenericValue::swap
friend void swap(GenericValue &a, GenericValue &b) RAPIDJSON_NOEXCEPT
free-standing swap function helper
Definition: document.h:1001