Professional Documents
Culture Documents
Creational Creational Builder CPP
Creational Creational Builder CPP
Creational Creational Builder CPP
#include <string>
#include <vector>
#include <sstream>
#include <memory>
using namespace std;
struct HtmlBuilder;
struct HtmlElement
{
string name;
string text;
vector<HtmlElement> elements;
const size_t indent_size = 2;
HtmlElement() {}
HtmlElement(const string& name, const string& text)
: name(name),
text(text)
{
}
oss << i << "</" << name << ">" << endl;
return oss.str();
}
struct HtmlBuilder
{
HtmlBuilder(string root_name)
{
root.name = root_name;
}
int demo()
{
// <p>hello</p>
auto text = "hello";
string output;
output += "<p>";
output += text;
output += "</p>";
printf("<p>%s</p>", text);
// <ul><li>hello</li><li>world</li></ul>
string words[] = { "hello", "world" };
ostringstream oss;
oss << "<ul>";
for (auto w : words)
oss << " <li>" << w << "</li>";
oss << "</ul>";
printf(oss.str().c_str());
// easier
HtmlBuilder builder{ "ul" };
builder.add_child("li", "hello").add_child("li", "world");
cout << builder.str() << endl;
getchar();
return 0;
}