使用方法:将下面代码copy到记事本里,修改后缀名为html,然后用浏览器打开就可以使用了,从c++生成的HTML代码可以直接使用在博客园博客中去^_^
<SCRIPT type=text/javascript>
versionOK = false
</SCRIPT>
<SCRIPT type="text/javascript; version=1.5">
versionOK = true
</SCRIPT>
<SCRIPT type=text/jscript>
if (parseFloat(ScriptEngineMajorVersion() + "." + ScriptEngineMinorVersion()) >= 5.5) versionOK = true
</SCRIPT>
<SCRIPT type=text/javascript>
if (versionOK) {
// edit lines below to change the output style
comment = {color:"#008000", bold:false, italic:true, name:"comment"} // 注释行和注释块
precompiler = {color:"#A000A0", bold:false, italic:false, name:"pre"} // 编译预处理
operator = {color:"#646464", bold:true, italic:false, name:"operator"} // operator and punctuator symbols
stringLiteral = {color:"#FF00FF", bold:false, italic:false, name:"string"} // 字符串和宽字符串常量
charLiteral = {color:"#FF00FF", bold:false, italic:false, name:"char"} // 字符和宽字符常量
intLiteral = {color:"#800080", bold:false, italic:false, name:"int"} // 整形常量
floatLiteral = {color:"#800080", bold:false, italic:false, name:"float"} // 浮点型常量
boolLiteral = {color:"#800080", bold:true, italic:false, name:"bool"} // 布尔型常量
types = {color:"#0000FF", bold:true, italic:false, name:"type"} // built-in type names
flowControl = {color:"#0000FF", bold:true, italic:false, name:"flow"} // program flow control keywords
keyword = {color:"#0000FF", bold:true, italic:false, name:"keyword"} // other keywords
background_color = "#e6e6e6"
}
</SCRIPT>
<SCRIPT type=text/javascript>
if (versionOK) {
keys = new Array() // containing C++ language elements
keys.push({style:comment, start:/\s*\/\*[\s\S]*?\*\//mg})
keys.push({style:comment, start:/\s*\/\//mg, end:/\n/mg, neglect:/\\|\?\?\//mg})
keys.push({style:precompiler, start:/\s*?^\s*(?:#|\?\?=|%:)/mg, end:/\n/m, neglect:/\\[\s\S]|\?\?\/[\s\S]/m})
keys.push({style:stringLiteral, start:/\s*(?:\bL)?"/mg, end:/"/m, neglect:/\\[\s\S]|\?\?\/[\s\S]/m})
keys.push({style:charLiteral, start:/\s*(?:\bL)?'/mg, end:/'/m, neglect:/\\[\s\S]|\?\?\/[\s\S]/m})
keys.push({style:floatLiteral, start:/\s*(?:(?:\b\d+\.\d*|\.\d+)(?:E[\+\-]?\d+)?|\b\d+E[\+\-]?\d+)[FL]?\b|\s*\b\d+\./mgi})
keys.push({style:intLiteral, start:/\s*\b(?:0[0-7]*|[1-9]\d*|0x[\dA-F]+)(?:UL?|LU?)?\b/mgi})
keys.push({style:boolLiteral, start:/\s*\b(?:true|false)\b/mg})
keys.push({style:types, start:/\s*\b(?:bool|char|double|float|int|long|short|signed|unsigned|void|wchar_t)\b/mg})
keys.push({style:flowControl, start:/\s*\b(?:break|case|catch|continue|default|do|else|for|goto|if|return|switch|throw|try|while)\b/mg})
keys.push({style:keyword, start:/\s*\b(?:asm|auto|class|const_cast|const|delete|dynamic_cast|enum|explicit|export|extern|friend|inline|main|mutable|namespace|new|operator|private|protected|public|register|reinterpret_cast|sizeof|static_cast|static|struct|template|this|typedef|typeid|typename|union|using|virtual|volatile|and_eq|and|bitand|bitor|compl|not_eq|not|or_eq|or|xor_eq|xor)\b/mg})
keys.push({style:operator, start:/\s*[\{\}\[\]\(\)<>%:;\.\?\*\+\-\^&\|~!=,\\]+|\s*\//mg})
function setOptions() {
windowSettings = "menubar,scrollbars,status,resizable";
outputStart = "<PRE style='BACKGROUND: " + background_color + ";'>";
outputEnd = "</PRE>";
for (var i = 0; i != keys.length; ++i) { // set xhtml tags
keys[i].before = ""
if (keys[i].style.bold) keys[i].before += "<B>"
if (keys[i].style.italic) keys[i].before += "<I>"
keys[i].before += "<FONT COLOR=\"" + keys[i].style.color + "\">"
keys[i].after = "</FONT>"
if (keys[i].style.italic) keys[i].after += "</I>"
if (keys[i].style.bold) keys[i].after += "</B>"
}
}
}
function toHTML(s) { // convert special chars
s = s.split("&").join("&");
s = s.split("<").join("<");
return s.split(">").join(">");
}
function colorCode(f) {
if (versionOK) {
setOptions()
var s = f.t.value // get code
s = s.replace(/\r\n?/gm, "\n") // convert DOS and/or MAC to UNIX
var keyString = ""
var match = 0
var strResult = "";
strResult = outputStart;
var previousMatch = -1
for (var i = 0; i != keys.length; ++i) keys[i].startPos = -1
for (var position = 0; position != s.length; position = keys[match].endPos) {
for (var i = 0; i != keys.length; ++i) {
if (keys[i].startPos < position) { // update needed
keys[i].start.lastIndex = position
var result = keys[i].start.exec(s)
if (result != null) {
keys[i].startPos = result.index
keys[i].endPos = keys[i].start.lastIndex
}
else keys[i].startPos = keys[i].endPos = s.length
}
}
match = 0
for (var i = 1; i < keys.length; ++i) // find first matching key
if (keys[i].startPos < keys[match].startPos) match = i
if (keys[match].end != undefined) { // end must be found
var end = new RegExp(keys[match].end.source + "|" + keys[match].neglect.source, "mg")
end.lastIndex = keys[match].endPos
while (keys[match].endPos != s.length) {
result = end.exec(s)
if (result != null) {
if (result[0].search(keys[match].end) == 0) {
keys[match].endPos = end.lastIndex
break
}
}
else keys[match].endPos = s.length
}
}
var before = s.substring(position, keys[match].startPos)
keyString = s.substring(keys[match].startPos, keys[match].endPos)
var output = ""
if ((before == "") && (match == previousMatch))
output += toHTML(keyString)
else {
if (previousMatch != -1) output += keys[previousMatch].after
output += toHTML(before)
if (keyString != "") output += keys[match].before + toHTML(keyString)
}
previousMatch = match
strResult += output;
}
if (keyString != "") strResult += keys[match].after;
strResult += outputEnd;
document.all.g.value = strResult;
document.all.resultText.style.display="";
}
else alert("Sorry, your browser is too old. Minimum required: Microsoft Internet " +
"Explorer 5.5, Mozilla 1.0, Netscape 6 or other Mozilla-based browser.\n")
}
</SCRIPT>
<SCRIPT type=text/javascript>
function disable() {
if (!versionOK) {
document.cpp2htm.xhtml2.disabled = true
document.cpp2htm.convert.disabled = true
}
}
</SCRIPT>
<DIV class=content><SMALL>将C++源代码copy到下面的方框里:</SMALL>
<FORM action="" id="cpp2htm">
<P>
<textarea style="wrap: none;" name=t rows=10 cols=80></textarea>
<BR><INPUT id=convert onclick=colorCode(this.form) type=button value=转换>
<SMALL>(大段代码可能需要等待一段时间)</SMALL></font>
</P>
</FORM>
</DIV>
<form>
<DIV id=resultText>
<textarea style="wrap: none;" id=g rows=10 cols=80></textarea><BR>
<input type=button value="在新窗口查看效果" onClick='runCode(document.all.g)' >
<input type=button value="复制代码到剪贴板" onClick='copyCode(document.all.g)'>
<input type=button value="把代码保存到文件" onClick='saveCode(document.all.g)'>
</DIV>
<script language="javascript">
document.all.resultText.style.display = "none";
</script>
<SCRIPT language=JavaScript>
function copyCode(obj) {
var rng = document.body.createTextRange();
rng.moveToElementText(obj);
rng.scrollIntoView();
rng.select();
rng.execCommand("Copy");
rng.collapse(false);
}
function runCode(obj) {
var winname = window.open('', "_blank", '');
winname.document.open('text/html', 'replace');
var str = "<html><title>C/C++代码带颜色语法加亮效果</title>";
str += "<body >";
str += obj.value;
str += "</body></html>"
winname.document.writeln( str );
winname.document.close();
}
function saveCode(obj) {
var winname = window.open('', '_blank', 'top=10000');
winname.document.open('text/html', 'replace');
winname.document.writeln(obj.value);
winname.document.execCommand('saveas','','code.htm');
winname.close();
}
</SCRIPT>

浙公网安备 33010602011771号