简介
nlohmann::basic_json::back
是一个成员函数,用于访问 JSON 对象的最后一个元素。这个函数在 nlohmann::json
库中,这是一个流行的 C++ JSON 处理库。
函数原型如下:
value_type& back();
const value_type& back() const;
这个函数返回一个引用,指向 JSON 对象的最后一个元素。如果 JSON 对象是一个数组,那么这个函数将返回数组的最后一个元素。如果 JSON 对象是一个对象,那么这个函数将返回对象的最后一个键值对。
这个函数有两个版本,一个是非常量版本,返回的引用可以用来修改元素的值。另一个是常量版本,返回的引用不能用来修改元素的值,只能用来读取元素的值。
需要注意的是,如果 JSON 对象为空,调用这个函数将会抛出一个 out_of_range
异常。
这是一个使用 nlohmann::basic_json::back
的例子:
#include <nlohmann/json.hpp>
#include <iostream>
int main() {
nlohmann::json j = { "first", "second", "third" };
// prints "third"
std::cout << j.back() << std::endl;
// modify the last element
j.back() = "last";
// prints "last"
std::cout << j.back() << std::endl;
return 0;
}
在这个例子中,我们首先创建了一个包含三个元素的 JSON 数组。然后我们使用 back
函数打印出最后一个元素。然后我们修改最后一个元素的值,再次打印出最后一个元素,可以看到元素的值已经被成功修改。
nlohmann::basic_json::back 官网介绍
reference back();
const_reference back() const;
返回容器中的最后一个元素的引用。对于JSON容器c,表达式c.back()等同于
auto tmp = c.end();
--tmp;
return *tmp;
返回值
在结构化类型(数组或对象)的情况下,返回最后一个元素的引用。在数字、字符串、布尔值或二进制值的情况下,返回值的引用。
异常安全性
强保证:如果抛出异常,JSON值不会有任何改变。
异常
如果JSON值为null,将抛出异常invalid_iterator.214。
复杂度
常数。
注意
前提条件
数组或对象不能是空的。在空数组或对象上调用back会产生未定义的行为。
示例
#include <iostream>
#include <nlohmann/json.hpp>
using json = nlohmann::json;
int main()
{
// create JSON values
json j_boolean = true;
json j_number_integer = 17;
json j_number_float = 23.42;
json j_object = {{"one", 1}, {"two", 2}};
json j_object_empty(json::value_t::object);
json j_array = {1, 2, 4, 8, 16};
json j_array_empty(json::value_t::array);
json j_string = "Hello, world";
// call back()
std::cout << j_boolean.back() << '\n';
std::cout << j_number_integer.back() << '\n';
std::cout << j_number_float.back() << '\n';
std::cout << j_object.back() << '\n';
//std::cout << j_object_empty.back() << '\n'; // undefined behavior
std::cout << j_array.back() << '\n';
//std::cout << j_array_empty.back() << '\n'; // undefined behavior
std::cout << j_string.back() << '\n';
// back() called on a null value
try
{
json j_null;
j_null.back();
}
catch (json::invalid_iterator& e)
{
std::cout << e.what() << '\n';
}
}
输出
true
17
23.42
2
16
"Hello, world"
[json.exception.invalid_iterator.214] cannot get value
另见¶
front访问第一个元素
版本历史¶
在版本1.0.0中添加。
在版本3.8.0中调整代码以返回二进制值的引用。