请输入您要查询的百科知识:

 

词条 ctemplate
释义

ctemplate (Google-ctemplate)的设计哲学是轻量级,快速,且逻辑和界面分离,因此和ClearSilver和Teng是有一些差异的。比如Ctemplate就没有模板函数,没有条件判断和循环语句(当然,它可以通过变通的方式来实现)。

ctemplate大体上分为两个部分,一部分是模板,另一部分是数据字典。模板定义了界面展现的形式(V),数据字典就是填充模板的数据(M),你自己写业务逻辑去控制界面展现(C),典型的MVC模型。

ctemplate模板中有四中标记,对应的数据字典也有不同的处理方式:

* 变量,{{变量名}},用两个大括号包含的就是变量名,在c++代码中,可以对变量赋值,任何类型的值都可以(如字符,整数,日期等)。

* 片断,{{#片断名}},片断在数据字典中表现为一个子字典,字典是可以分级的,根字典下面有多级子字典。片断可以处理条件判断和循环。

* 包含,{{>模板名}}包含指的是一个模板可以包含其他模板,对应的也是一个字字典。

* 注释,{{!注释名}},包含注释。

Here is a simple template file:

Hello{{NAME}},

You have just won ${{VALUE}}!

{{#IN_CA}}Well, ${{TAXED_VALUE}}, after taxes.{{/IN_CA}}

Here is a C++ program to fill in the template, which we assume is stored in the file example.tpl':

#include<stdlib.h>

#include<string>

#include<iostream>

#include<ctemplate/template.h>

int main(int argc,char** argv){

ctemplate::TemplateDictionary dict("example");

dict.SetValue("NAME","John Smith");

int winnings = rand()%100000;

dict.SetIntValue("VALUE", winnings);

dict.SetFormattedValue("TAXED_VALUE","%.2f", winnings *0.83);

// For now, assume everyone lives in CA.

// (Try running the program with a 0 here instead!)

if(1){

dict.ShowSection("IN_CA");

}

std::string output;

ctemplate::ExpandTemplate("example.tpl", ctemplate::DO_NOT_STRIP,&dict,&output);

std::cout << output;

return0;

}

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2025/1/11 10:29:43