?? html.cpp
字號:
// C++ By Example, Chapter 9
// Generating XML/HTML, etc
#include "xml.h"
using namespace std;
Tag bold("BOLD");
Tag italic("ITALIC");
Tag link_tag("A");
Tag para("P");
Tag head_tag("");
class HTMLDoc: public XMLDoc {
public:
void open(string name, string doc_title="", string clr="#FFFFFF")
{
if (name.find(".") == string::npos) name += ".htm";
XMLDoc::open(name);
if (doc_title=="") doc_title = name;
push(Tag("HTML",false));
push(Tag("HEAD"));
push(Tag("TITLE"));
XMLDoc::outs(doc_title);
XMLDoc::outs("\n");
Tag body_tag("BODY",false);
body_tag.add_attrib("bgcolor",clr);
push(body_tag);
XMLDoc::outs("\n");
}
HTMLDoc(string name, string doc_title="", string clr="#FFFFFF")
{
open(name,doc_title,clr);
}
void outs(const char *str) // override
{
// calls original method to do output
if (strchr(str,'\n') != NULL) {
char buff[256];
strcpy(buff,str);
for(char *t = strtok(buff,"\n"); t != NULL; t = strtok(NULL,"\n"))
{
push(para);
XMLDoc::outs(t);
XMLDoc::outs("\n");
}
} else XMLDoc::outs(str);
}
};
Tag& head(int level = 0)
{
head_tag.name("H" + int2str(level));
return head_tag.set(level > 0);
}
Tag& link(string fname)
{
link_tag.clear();
link_tag.add_attrib("HREF",fname);
return link_tag;
}
void exercise()
{
int n = 58;
HTMLDoc doc("first","An introduction");
doc << head(1) << "Here is a Title";
doc << "There have been " << n << " visitors\n";
doc << bold << "whatever\n";
doc.close();
}
int main(int argc, char **argv)
{
exercise();
return 0;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -