ctemplate 的安装和使用

news2024/12/23 23:22:49

ctemplate 用于linux下的web开发,可以动态生成一个html网页,这里的 “ 动态 ” 指的是网页的数据不是固定的,可以使用变量来填充网页内容。   


        目录

1、下载ctemplate

2、安装 ctemplate

3、使用ctemplate库


1、下载ctemplate

可以在gitee上搜索 ctemplate,选择一个下载。gitee下载链接:ctemplate | download

在Linux命令行输入: git clone 复制的链接

2、安装 ctemplate

接下来开始安装,先进入到 ctemplate 目录下

第一步,因为是源码安装,需要手动运行安装程序,输入: ./autogen.sh

第二步,输入:./configure

第三步,输入:make

如果出现了编译报错,大概率是gcc编译器版本过低的问题,可以输入gcc  -v查看一下版本,此时需要更新版本。 关于gcc的版本更新,可以参考:gcc | update

第四步:输入:sudo make install

 

3、使用ctemplate库

现在这个库已经安装到了当前系统中,我们可以在任意 .cc 文件中调用这个库

test.cc

#include <ctemplate/template.h>
#include <string>
#include <iostream>

int main(){
  // 形成数据字典
  ctemplate::TemplateDictionary dic("test");
  dic.SetValue("name", "张三");                // 相当于插入了一个键值对(name会在下面的网页模板中出现)

  // 构建空网页模板对象
  std::string empty_html = "./test.html";     // 空的网页模板
  ctemplate::Template* tp = ctemplate::Template::GetTemplate(empty_html, ctemplate::DO_NOT_STRIP);
  
  // 渲染网页模板(将网页中的变量 name 替换成 "张三")
  std::string filled_html;
  tp->Expand(&filled_html, &dic);

  std::cout << filled_html << std::endl;
  return 0;
}

test.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
  <!-- 渲染时,变量name会被替换成对应的值 -->
  <h1>{{name}}</h1>
</body>
</html>

编译时,需要添加第三方库的依赖 -lctemplate、-lpthread。因为ctemplate库用到了pthread库

测试结果如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/147356.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端对接微信公众号网页开发流程,授权对接

前面讲到 前端对接微信公众号网页开发流程&#xff0c;前期配置&#xff0c;本篇文章主要详细介绍关于公众号的授权对接。 一、引入微信js-sdk 在需要调用 JS 接口的页面引入如下 JS 文件 http://res.wx.qq.com/open/js/jweixin-1.6.0.js如需进一步提升服务稳定性&#xff0…

如何在windows上使用VMware安装macOS虚拟机

如何在windows上使用VMware安装macOS虚拟机一、准备工作1.1 安装 VMware1.2 下载macOS的安装包1.3 下载VMware虚拟机解锁安装苹果系统工具二、解锁VMware支持macOS安装2.1 关闭已经打开的VMware软件2.2 安装VMware Workstation Unlocker三、VMware创建虚拟机3.1 解压缩macOS的安…

【蓝桥杯】X 进制减法

难点一&#xff1a;base base * s[i] % mod;//***当前位乘以x&#xff0c;x要*s[i],一直要乘到个位的进制难点二&#xff1a;当当前该位的的进制位&#xff0c;为max(max(a[i]1, b[i]1), 2)的时候&#xff0c;结果最小ACcode:#include<iostream>using namespace std;con…

性能优化系列之『混合式开发: React Native内核及优势介绍』

文章の目录一、React Native愿景二、技术优势1、技术2、效率3、发版三、底层内核1、RN&#xff1a;helloWorld.jsx2、iOS&#xff1a;helloWorld.m3、Android&#xff1a;helloWorld.xml4、Web&#xff1a;helloWorld.html四、行业背景五、选型建议写在最后一、React Native愿景…

【计算机体系结构基础】指令流水线

单周期处理器 简要描述单周期处理器的执行过程&#xff1a; PC从指令存储器中读取指令 取指后译码得出相关的控制信号读取regfile&#xff08;寄存器堆&#xff09; 运算器对regfile中取出的操作数进行计算&#xff0c;将计算的结果写回通用寄存器堆或者得到访存指令的地址或…

边缘数据采集网关如何实现PLC远程上下载

边缘数据采集网关&#xff0c;又称边缘计算网关、工业物联网网关&#xff0c;是连接工业设备与通信网络的桥梁&#xff0c;可以实现不同协议之间的解析转换&#xff0c;打造高效实时的数据采集系统&#xff0c;并借助边缘计算规则对数据进行清洗过滤&#xff0c;适配云平台实现…

QT 学习笔记(十五)

文章目录一、UDP 通信过程1. Linux 下的 UDP 通信过程2. QT 下的 UDP 通信过程3. 在 QT 中实现 UDP 通信的流程4. TCP/IP 和 UDP的区别二、UDP 文本发送1. UDP 文本发送实例演示2. UDP 广播3. UDP 组播三、UDP 文本发送实现代码1. 主窗口头文件 widget.h2. 主窗口源文件 widget…

论文创新及观点

FEW-SHOT TEXT CLASSIFICATION WITH DISTRIBUTIONAL SIGNATURES 任务 Given an N-way K-shot classification task 论文设计图像 数据集 20 Newsgroups is comprised of informal discourse from news discussion forums (Lang, 1995).Documents are organized under 20 to…

数据分析-深度学习 Day2

目录&#xff1a;第一节 机器学习&深度学习介绍第二节 机器学习攻略一、机器学习的框架二、模型训练攻略三、针对Optimization Issue的优化&#xff0c;类神经网络训练不起来怎么办(一) 局部最优点和鞍点(二) 批处理和momentum(三) 自动调节学习率Learning rate(四) 损失函…

vue实现微信端和企业微信端扫码

前要&#xff1a;微信端调用微信的扫一扫和企业微信端调用企业微信的扫一扫获取订单码查询&#xff01;&#xff01; 一、微信端扫一扫 这里使用的是uniapp框架调用微信的内置sdk扫码防伪溯源&#xff01;http引入或者npm安装模块&#xff1a; //public/index.html <!DOCT…

《设计模式》命令模式

《设计模式》设计模式的基本原则 《设计模式》单例模式 《设计模式》工厂模式 《设计模式》原型模式 《设计模式》建造者模式 《设计模式》适配器模式 《设计模式》桥接模式 《设计模式》装饰者模式 《设计模式》组合模式 《设计模式》外观模式 《设计模式》享元模式 《设计模式…

【Java开发】Spring Cloud 03 :Spring Boot 项目搭建

为了体验从 0 到 1 的微服务改造过程&#xff0c;我们先使用 Spring Boot 搭建一个基础版的优惠券平台项目&#xff0c;等学习到 Spring Cloud 的时候&#xff0c;我们就在这个项目之上做微服务化改造&#xff0c;将 Spring Cloud 的各个组件像添砖加瓦一样集成到项目里。上一章…

jacoco:java代码覆盖率实践

文章目录一、jacoco基本了解二、实践准备三、jacoco使用3.1 插桩3.2 dump:覆盖率文件导出3.3 report:可视化报告3.4 merge:合并覆盖率文件四、相关命令扩展4.1 javaagent4.2 dump4.3 merge4.4 report五、资源链接一、jacoco基本了解 jacoco是一款面向java的代码覆盖率工具&…

linux系统中C++中构造与析构函数以及this的使用方法

大家好&#xff0c;今天主要和大家聊一聊&#xff0c;C里面的基本语法结构以及对应的操作方法。 目录 第一&#xff1a;构造函数与析构函数 第二&#xff1a;this指针 第一&#xff1a;构造函数与析构函数 什么是构造函数&#xff1f;构造函数在对象实例化时被系统自动调用&a…

xshell连接Linux一直失败解决方法

文章目录解决对象方法配置防火墙关闭Linux防火墙关闭Windows防火墙xshell连接Linux一直失败解决方法 解决对象 可能出现以下两个问题&#xff1a; Linux防火墙已关闭和Windows防火墙已经关闭配置好 vim /etc/sysconfig/network-scripts/ifcfg-ens33 方法 配置 这个是最容易…

linux系统中实现C++中继承和重载的方法

大家好&#xff0c;今天主要和大家聊一聊&#xff0c;如何实现C中继承和重载的功能。 第一&#xff1a;C中的继承功能 面向对象程序设计中最重要的一个概念是继承。继承允许我们依据另一个类来定义一个类&#xff0c;这使得创建和维护一个应用程序变得更容易。这样做&#xff0…

CLRNet: Cross Layer Refinement Network for Lane Detection

Paper name CLRNet: Cross Layer Refinement Network for Lane Detection Paper Reading Note URL: https://arxiv.org/pdf/2203.10350.pdf TL;DR CVPR 2022 文章&#xff0c;自动驾驶公司飞步科技与浙大联合出品。lane anchor-based 方案&#xff0c;在多个数据集上取得 …

Linux中的哈希表:基于双链表的内核模块

1. 前言Linux内核中选取双向链表作为其基本的数据结构&#xff0c;并将其嵌入到其他的数据结构中&#xff0c;使得其他的数据结构不必再一一实现其各自的双链表结构。实现了双链表结构的统一&#xff0c;同时可以演化出其他复杂数据结构。本文对linux中基于双链表实现的哈希表进…

java springboot+mybatis电影售票网站管理系统前台+后台设计和实现

java springbootmybatis电影售票网站管理系统前台后台设计和实现 博主介绍&#xff1a;5年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言…

RS—|遥感数字图像处理编程练习(python)

目录一&#xff1a;模拟计算图像直方图和累计直方图二&#xff1a;计算图像的均值、标准差、相关系数和协方差三&#xff1a;利用模板进行卷积运算四&#xff1a;获取彩色图像的直方图五&#xff1a;图像直方图均衡化一&#xff1a;模拟计算图像直方图和累计直方图 ① 调用的p…