程序员人生 网站导航

C++ 的字符串格式化库:cpptempl

栏目:综合技术时间:2013-12-02 00:25:00

这里向大家介绍一个C++的字符串格式化库,叫cpptempl,这个库支持对字符串格式的条件,循环,变量插入。看上去很不错,只不过其是基于boost库的。

下面是一个例子:

// The text templatewstring text = L"I heart {$place}!" ;// Data to feed the template enginecpptempl::data_map data ;// {$place} => Okinawadata[L"place"] = cpptempl::make_data(L"Okinawa");// parse the template with the supplied data dictionarywstring result = cpptempl::parse(text, data) ;

输出结果是:

I heart Okinawa!

是不是很方便?让我们看一个更复杂的例子:

// You'd probably load this template from a file in real life.wstring text = L"<h3>Locations</h3><ul>"    L"{% for place in places %}"    L"<li>{$place}</li>"    L"{% endfor %}"    L"</ul>" ;// Create the list of itemscpptempl::data_list places;places.push_back(cpptempl::make_data(L"Okinawa"));places.push_back(cpptempl::make_data(L"San Francisco"));// Now set this in the data mapcpptempl::data_map data ;data[L"places"] = cpptempl::make_data(places);// parse the template with the supplied data dictionarywstring result = cpptempl::parse(text, data) ;

输出结果是:

<h3>Locations</h3>
<ul>
<li>Okinawa</li>
<li>San Francisco</li>
</ul>

更为详细的说明请到这里:http://bitbucket.org/ginstrom/cpptemplate/wiki/Home。

Google也有一个类似的库叫ctemplate:http://code.google.com/p/google-ctemplate/ 提供相似的方法,你也可以试试看。与Google相对应的Java库叫Hapax:http://code.google.com/p/hapax/。

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐