理解fmt formatter解析函数
Understand fmt formatter parse function
我正在尝试在解析函数下为 fmt 中的自定义类型创建格式化程序。在他们的文档 (https://fmt.dev/dev/api.html) 中,这一行有某种我以前从未见过的循环结构:
auto it = ctx.begin(), end = ctx.end();
if (it != end && (*it == 'f' || *it == 'e')) presentation = *it++;
这显然是一个使用迭代器的循环,大概是C++17的新东西。它是什么?完整示例在这里:https://godbolt.org/z/fEGvaj
formatter::parse
函数采用解析上下文 ctx
并检查范围 [ctx.begin(), ctx.end())
是否包含格式说明符 f
或 e
(在此示例中)。
if (it != end && (*it == 'f' || *it == 'e')) presentation = *it++;
^ ^ ^
check if the check if the first
range is empty character is 'f' or 'e'
这里没有什么特别新颖的,这段代码是兼容C++98的。
我正在尝试在解析函数下为 fmt 中的自定义类型创建格式化程序。在他们的文档 (https://fmt.dev/dev/api.html) 中,这一行有某种我以前从未见过的循环结构:
auto it = ctx.begin(), end = ctx.end();
if (it != end && (*it == 'f' || *it == 'e')) presentation = *it++;
这显然是一个使用迭代器的循环,大概是C++17的新东西。它是什么?完整示例在这里:https://godbolt.org/z/fEGvaj
formatter::parse
函数采用解析上下文 ctx
并检查范围 [ctx.begin(), ctx.end())
是否包含格式说明符 f
或 e
(在此示例中)。
if (it != end && (*it == 'f' || *it == 'e')) presentation = *it++;
^ ^ ^
check if the check if the first
range is empty character is 'f' or 'e'
这里没有什么特别新颖的,这段代码是兼容C++98的。