【问题标题】:What is the best way to produce HTML output in C++? [duplicate]在 C++ 中生成 HTML 输出的最佳方法是什么? [复制]
【发布时间】:2012-01-31 13:40:11
【问题描述】:

可能重复:
C++ HTML template framework, templatizing library, HTML generator library

我有一个程序,其中包含许多表,因此我想在调试程序时在日志文件中跟踪它们。我想要彩色的、格式化的输出,所以我想我是用 HTML 格式写的。那么在 C++ 中创建 HTML 文件的最佳方法是什么?

琐碎的方法太恶心和容易出错:

std::stringstream ret;
ret << "<TABLE BORDER=\"1\" CELLBORDER=\"0\">\n";
ret << "    <TR>\n";
...

所以我以为我写了一个 HTML 包装器,但我认为有这么多的原因。

我想要一个 C++ 中的静态类型 HTML 包装器,使用以下语法或类似语法:

CHtmlHtml Html;
Html <<
    Body() % Id("1")
        << H1("My First Heading") <<
        << P("My first paragraph.");

或者在这种情况下

CHtmlTable table;
table % Border(1) % CellBorder(0) <<
    Tr() <<
        Td("Text") % Colspan(4);

有没有类似的项目?

【问题讨论】:

  • @tzaman:我想要一个静态类型的 HTML 包装器,而不是基于模板的
  • 我不清楚您排除模板的要求,但 tzaman 给出的答案列出了一大堆有用的 C++ 解决方案,有些根本不是模板。
  • 我检查了提供的链接,但看不到任何与工业抗抑郁药所说的内容相近的东西。它们几乎都来自 HTML/XML 模板。
  • @AlexisWilke 我很抱歉——我以为他指的是 C++ 模板。哎呀。
  • 请重新打开,我不需要 HTML 框架、模板化库或 HTML 生成器库。我想要一种用于 HTML 的领域特定语言。所以我想在出现问题时出现编译时错误。

标签: html c++ wrapper


【解决方案1】:

HTML 和 XML 都使用相同的语法,因此您可以只使用 C++ XML 库(例如 TinyXML)来动态创建您需要的所有节点。

This page 展示了如何使用 TinyXML 构建 XML(或者在您的情况下为 HTML)文档。

您可能需要做一些摆弄(例如删除生成文件顶部的 XML 声明),但我认为您可以轻松地为它创建一个包装器。

【讨论】:

  • 是的,我可以使用 XML 作为包装器的基础,但我根本不想编写包装器。 :) 但是看起来这个包装库不存在,所以我会写一个......
猜你喜欢
  • 1970-01-01
  • 2013-06-13
  • 1970-01-01
  • 1970-01-01
  • 2012-03-17
  • 1970-01-01
  • 2014-12-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多