普通的苦逼文艺程序猿  
——自强不息 厚德载物

使用方法:将下面代码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("&amp;");

s = s.split("<").join("&lt;");

return s.split(">").join("&gt;");

}

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>

posted on 2011-10-29 14:32  Magic Cpatain  阅读(1306)  评论(0)    收藏  举报