Google开源html模板库ctemplate的完整使用示例

ctemplate是Google开源的一个C++版本html模板替换库。有了它,在C++代码中操作html模板是一件非常简单和高效的事。通过本文,即可掌握对它的简单使用。

示例html模板文件example.htm内容如下:

ctemplate示例模板

    {{table1_name}}

        {{#TABLE1}}

        {{/TABLE1}}

{{field1}} {{field2}} {{field3}}

模板中的变量使用{{}}括起来,

而{{#TABLE1}}和{{/TABLE1}}表示一个循环。

C++代码x.cpp文件内容如下:

#include 
#include 
#include 
int main()
{
    ctemplate::TemplateDictionary dict("example");
    dict.SetValue("table1_name", "example");
    // 为节省篇幅,这里只循环一次
    for (int i=0; i<2; ++i)
    {
        ctemplate::TemplateDictionary* table1_dict;
        table1_dict = dict.AddSectionDictionary("TABLE1");
        table1_dict->SetValue("field1", "1");
        table1_dict->SetValue("field2", "2");
        // 这里有点类似于printf
        table1_dict->SetFormattedValue("field3", "%d", i);
    }
    std::string output;
    ctemplate::Template* tpl;
    tpl = ctemplate::Template::GetTemplate("example.htm", ctemplate::DO_NOT_STRIP);
    tpl->Expand(&output, &dict);
    printf("%s\n", output.c_str());
    return 0;
}

编译:

g++ -g -o x x.cpp ./lib/libctemplate_nothreads.a -I./include

执行x输出内容如下:

ctemplate示例模板

    example

120

121

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏GopherCoder

Python: 实际项目中抽象出的小项目设计Python: 一周笔记

20330
来自专栏java学习

Hibernate学习笔记2

定义hbm.xml映射文件和pojo类时都需要定义主键,Hibernate中定义的主键类型包括:自然主键和代理主键:

11940
来自专栏Django Scrapy

Django安装及简单使用1.3

Django安装及简单使用1.3 代码都在github: URL:https://github.com/njxshr/codes/tree/master/t...

34680
来自专栏xingoo, 一个梦想做发明家的程序员

基于ELK的数据分析实践——满满的干货送给你

很多人刚刚接触ELK都不知道如何使用它们来做分析,经常会碰到下面的问题: 安装完ELK不知从哪下手 拿到数据样本不知道怎么分解数据 导入到elastics...

50770
来自专栏晨星先生的自留地

mysql注入高级篇2--sqli lab

24530
来自专栏大数据和云计算技术

MonetDB学习笔记

这个文章是我2013年6月写在博客里面的,翻出来挺有意思,MonetDB有很多技术值得学习。 1 架构: 三层软件架构: SQL front-end:前端SQL...

649110
来自专栏GreenLeaves

oracle 表空间tablespace

一、Oracle 表空间的组成 Everoone knows Oracle数据库真正存放数据的是数据文件,Oracle表空间是逻辑上的概念,他在物理上是并不存在...

39380
来自专栏程序员的SOD蜜

PDF.NET的SQL日志 ASP.net 路径问题 详解

PDF.NET(PWMIS数据开发框架)是一个基于SQL-MAP(将SQL语句映射成数据访问代码)和OQL(对象化的SQL查询表达式)技术的数据开发框架,兼有S...

23660
来自专栏青玉伏案

Swift3.0服务端开发(五) 记事本的开发(iOS端+服务端)

前边以及陆陆续续的介绍了使用Swift3.0开发的服务端应用程序的Perfect框架。本篇博客就做一个阶段性的总结,做一个完整的实例,其实这个实例在《Swift...

24870
来自专栏jiajia_deng

递归删除文件(支持通配符)

24440

扫码关注云+社区

领取腾讯云代金券