zoukankan      html  css  js  c++  java
  • Google开源html模板库ctemplate的完整使用示例

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

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

    <html>
    <head>
    <title>ctemplate示例模板</title>
    </head>

    <body>
        {{table1_name}}
        <table>
            {{#TABLE1}}
            <tr>
                <td>{{field1}}</td>
                <td>{{field2}}</td>
                <td>{{field3}}</td>
            </tr>
            {{/TABLE1}}
        </table>
    </body>
    </html>

    模板中的变量使用{{}}括起来,
    而{{#TABLE1}}和{{/TABLE1}}表示一个循环。

    C++代码x.cpp文件内容如下:
    #include <ctemplate/template.h>
    #include <stdio.h>
    #include <string>

    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输出内容如下:
    <html>
    <head>
    <title>ctemplate示例模板</title>
    </head>

    <body>
        example
        <table>
            
            <tr>
                <td>1</td>
                <td>2</td>
                <td>0</td>
            </tr>
            
            <tr>
                <td>1</td>
                <td>2</td>
                <td>1</td>
            </tr>
            
        </table>
    </body>
    </html>
  • 相关阅读:
    SpringMVC框架
    Spring框架
    Test_Shop项目开发练习
    MyBatis动态传参
    存储过程
    游标和触发器
    远程连接Linux系统管理
    安装Linux虚拟机
    request_html模块(下)
    request_html模块(上)
  • 原文地址:https://www.cnblogs.com/aquester/p/9891763.html
Copyright © 2011-2022 走看看