本文整理汇总了C++中buffer::format方法的典型用法代码示例。如果您正苦于以下问题:C++ buffer::format方法的具体用法?C++ buffer::format怎么用?C++ buffer::format使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类buffer
的用法示例。
在下文中一共展示了buffer::format方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: to_string
bool xml_document::to_string(buffer& buf, bool pretty_print, const struct node* node, unsigned depth) const
{
do {
if (pretty_print) {
// If not the first node...
if (node != _M_nodes) {
if (!buf.append("\r\n", 2)) {
return false;
}
}
}
if (!node_to_string(buf, pretty_print, node, depth)) {
return false;
}
if (node->child != -1) {
if (!to_string(buf, pretty_print, &(_M_nodes[node->child]), depth + 1)) {
return false;
}
if (pretty_print) {
if (!buf.append("\r\n", 2)) {
return false;
}
for (unsigned i = 0; i < depth; i++) {
if (!buf.append('\t')) {
return false;
}
}
}
if (!buf.format("</%.*s>", node->len, _M_buf.data() + node->text)) {
return false;
}
}
if (node->next < 0) {
return true;
}
node = &(_M_nodes[node->next]);
} while (true);
}
示例2: node_to_string
bool xml_document::node_to_string(buffer& buf, bool pretty_print, const struct node* node, unsigned depth) const
{
if (pretty_print) {
for (unsigned i = 0; i < depth; i++) {
if (!buf.append('\t')) {
return false;
}
}
}
switch (node->type) {
case DOCTYPE_NODE:
return buf.format("<!DOCTYPE %.*s>", node->len, _M_buf.data() + node->text);
case PROCESSING_INSTRUCTION_NODE:
return buf.format("<?%.*s?>", node->len, _M_buf.data() + node->text);
case COMMENT_NODE:
return buf.format("<!-- %.*s -->", node->len, _M_buf.data() + node->text);
case ELEMENT_NODE:
if (!buf.format("<%.*s", node->len, _M_buf.data() + node->text)) {
return false;
}
if (node->attributes) {
const char* name;
size_t namelen;
const char* value;
size_t valuelen;
for (size_t i = 0; node->attributes->get(i, name, namelen, value, valuelen); i++) {
char quotes = (memchr(value, '"', valuelen)) ? '\'' : '"';
if (!buf.format(" %.*s=%c%.*s%c", namelen, name, quotes, valuelen, value, quotes)) {
return false;
}
}
}
if (node->child > 0) {
return buf.append('>');
} else {
return buf.append("/>", 2);
}
case TEXT_NODE:
return buf.format("%.*s", node->len, _M_buf.data() + node->text);
default:
return false;
}
}