﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-Cpper-随笔分类-软件工程</title><link>http://www.cppblog.com/gaimor/category/16275.html</link><description>业余CPP专家</description><language>zh-cn</language><lastBuildDate>Mon, 07 May 2012 07:15:56 GMT</lastBuildDate><pubDate>Mon, 07 May 2012 07:15:56 GMT</pubDate><ttl>60</ttl><item><title>libtidy几个问题</title><link>http://www.cppblog.com/gaimor/archive/2012/05/05/173754.html</link><dc:creator>ccsdu2009</dc:creator><author>ccsdu2009</author><pubDate>Sat, 05 May 2012 08:43:00 GMT</pubDate><guid>http://www.cppblog.com/gaimor/archive/2012/05/05/173754.html</guid><wfw:comment>http://www.cppblog.com/gaimor/comments/173754.html</wfw:comment><comments>http://www.cppblog.com/gaimor/archive/2012/05/05/173754.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/gaimor/comments/commentRss/173754.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/gaimor/services/trackbacks/173754.html</trackback:ping><description><![CDATA[1.不显示警告<br />只需要加载空回调函数即可<br />如下:<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">Bool&nbsp;cb(TidyDoc&nbsp;tdoc,TidyReportLevel&nbsp;lvl,</span><span style="color: #0000FF; ">uint</span><span style="color: #000000; ">&nbsp;line,</span><span style="color: #0000FF; ">uint</span><span style="color: #000000; ">&nbsp;col,ctmbstr&nbsp;mssg)<br />{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;no;<br />}<br /><br />tidySetReportFilter(doc,(TidyReportFilter)cb);</span></div>2.显示节点文本<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">&nbsp;&nbsp;&nbsp; TidyBuffer&nbsp;buf;<br />&nbsp;&nbsp;&nbsp;&nbsp;tidyBufInit(</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">buf);<br />&nbsp;&nbsp;&nbsp;&nbsp;tidyNodeGetText(doc,body,</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">buf);<br />&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">text:%s</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,buf.bp);<br />&nbsp;&nbsp;&nbsp;&nbsp;tidyBufFree(</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">buf);</span></div><img src ="http://www.cppblog.com/gaimor/aggbug/173754.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/gaimor/" target="_blank">ccsdu2009</a> 2012-05-05 16:43 <a href="http://www.cppblog.com/gaimor/archive/2012/05/05/173754.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用log4plus</title><link>http://www.cppblog.com/gaimor/archive/2012/03/15/168027.html</link><dc:creator>ccsdu2009</dc:creator><author>ccsdu2009</author><pubDate>Thu, 15 Mar 2012 14:22:00 GMT</pubDate><guid>http://www.cppblog.com/gaimor/archive/2012/03/15/168027.html</guid><wfw:comment>http://www.cppblog.com/gaimor/comments/168027.html</wfw:comment><comments>http://www.cppblog.com/gaimor/archive/2012/03/15/168027.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/gaimor/comments/commentRss/168027.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/gaimor/services/trackbacks/168027.html</trackback:ping><description><![CDATA[输出到控制台<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">iostream</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">log4cplus</span><span style="color: #000000; ">/</span><span style="color: #000000; ">helpers</span><span style="color: #000000; ">/</span><span style="color: #000000; ">loglog.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br /><br /></span><span style="color: #0000FF; ">using</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">namespace</span><span style="color: #000000; ">&nbsp;std;<br /></span><span style="color: #0000FF; ">using</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">namespace</span><span style="color: #000000; ">&nbsp;log4cplus::helpers;<br /><br /></span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;print_message()&nbsp;<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Entering&nbsp;print_message()<img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">&nbsp;endl;<br />&nbsp;&nbsp;&nbsp;&nbsp;LogLog::getLogLog()</span><span style="color: #000000; ">-&gt;</span><span style="color: #000000; ">debug(LOG4CPLUS_TEXT(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">This&nbsp;is&nbsp;a&nbsp;Debug&nbsp;statement<img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span style="color: #000000; ">"</span><span style="color: #000000; ">));<br />&nbsp;&nbsp;&nbsp;&nbsp;LogLog::getLogLog()</span><span style="color: #000000; ">-&gt;</span><span style="color: #000000; ">warn(LOG4CPLUS_TEXT(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">This&nbsp;is&nbsp;a&nbsp;Warning<img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span style="color: #000000; ">"</span><span style="color: #000000; ">));<br />&nbsp;&nbsp;&nbsp;&nbsp;LogLog::getLogLog()</span><span style="color: #000000; ">-&gt;</span><span style="color: #000000; ">error(LOG4CPLUS_TEXT(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">This&nbsp;is&nbsp;a&nbsp;Error<img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span style="color: #000000; ">"</span><span style="color: #000000; ">));<br />&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Exiting&nbsp;print_message()<img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">&nbsp;endl&nbsp;</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">&nbsp;endl;<br />}<br /><br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;main()&nbsp;<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;print_message();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Turning&nbsp;on&nbsp;debug<img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">&nbsp;endl;<br />&nbsp;&nbsp;&nbsp;&nbsp;LogLog::getLogLog()</span><span style="color: #000000; ">-&gt;</span><span style="color: #000000; ">setInternalDebugging(</span><span style="color: #0000FF; ">true</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;print_message();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Turning&nbsp;on&nbsp;quiet&nbsp;mode<img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">&nbsp;endl;<br />&nbsp;&nbsp;&nbsp;&nbsp;LogLog::getLogLog()</span><span style="color: #000000; ">-&gt;</span><span style="color: #000000; ">setQuietMode(</span><span style="color: #0000FF; ">true</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;print_message();<br />&nbsp;&nbsp;&nbsp;&nbsp;system(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">pause</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000;">;<br />}</span></div>另外一个例子:<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">#include&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">log4cplus/logger.h</span><span style="color: #000000; ">"</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">log4cplus/consoleappender.h</span><span style="color: #000000; ">"</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">log4cplus/loglevel.h</span><span style="color: #000000; ">"</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">iomanip</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br /><br /></span><span style="color: #0000FF; ">using</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">namespace</span><span style="color: #000000; ">&nbsp;std;<br /></span><span style="color: #0000FF; ">using</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">namespace</span><span style="color: #000000; ">&nbsp;log4cplus;<br /><br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;main()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;SharedAppenderPtr&nbsp;append_1(</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;ConsoleAppender());<br />&nbsp;&nbsp;&nbsp;&nbsp;append_1</span><span style="color: #000000; ">-&gt;</span><span style="color: #000000; ">setName(LOG4CPLUS_TEXT(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">First</span><span style="color: #000000; ">"</span><span style="color: #000000; ">));<br />&nbsp;&nbsp;&nbsp;&nbsp;Logger::getRoot().addAppender(append_1);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;Logger&nbsp;root&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;Logger::getRoot();<br />&nbsp;&nbsp;&nbsp;&nbsp;Logger&nbsp;test&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;Logger::getInstance(LOG4CPLUS_TEXT(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">test</span><span style="color: #000000; ">"</span><span style="color: #000000; ">));<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;LOG4CPLUS_DEBUG(root,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">This&nbsp;is</span><span style="color: #000000; ">"</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;a&nbsp;reall</span><span style="color: #000000; ">"</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">y&nbsp;long&nbsp;message.</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">&nbsp;endl<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Just&nbsp;testing&nbsp;it&nbsp;out</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">&nbsp;endl<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">What&nbsp;do&nbsp;you&nbsp;think?</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;test.setLogLevel(NOT_SET_LOG_LEVEL);<br />&nbsp;&nbsp;&nbsp;&nbsp;LOG4CPLUS_DEBUG(test,&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">This&nbsp;is&nbsp;a&nbsp;bool:&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">true</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;LOG4CPLUS_INFO(test,&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">This&nbsp;is&nbsp;a&nbsp;char:&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">'</span><span style="color: #000000; ">x</span><span style="color: #000000; ">'</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;LOG4CPLUS_INFO(test,&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">This&nbsp;is&nbsp;a&nbsp;short:&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">short</span><span style="color: #000000; ">)</span><span style="color: #000000; ">-</span><span style="color: #000000; ">100</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;LOG4CPLUS_INFO(test,&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">This&nbsp;is&nbsp;a&nbsp;unsigned&nbsp;short:&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">&nbsp;(unsigned&nbsp;</span><span style="color: #0000FF; ">short</span><span style="color: #000000; ">)</span><span style="color: #000000; ">100</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;LOG4CPLUS_INFO(test,&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">This&nbsp;is&nbsp;a&nbsp;int:&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">)</span><span style="color: #000000; ">1000</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;LOG4CPLUS_INFO(test,&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">This&nbsp;is&nbsp;a&nbsp;unsigned&nbsp;int:&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">&nbsp;(unsigned&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">)</span><span style="color: #000000; ">1000</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;LOG4CPLUS_INFO(test,&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">This&nbsp;is&nbsp;a&nbsp;long(hex):&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">&nbsp;hex&nbsp;</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">)</span><span style="color: #000000; ">100000000</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;LOG4CPLUS_INFO(test,&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">This&nbsp;is&nbsp;a&nbsp;unsigned&nbsp;long:&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">&nbsp;(unsigned&nbsp;</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">)</span><span style="color: #000000; ">100000000</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;LOG4CPLUS_WARN(test,&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">This&nbsp;is&nbsp;a&nbsp;float:&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">float</span><span style="color: #000000; ">)</span><span style="color: #000000; ">1.2345</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;LOG4CPLUS_ERROR(test,&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">This&nbsp;is&nbsp;a&nbsp;double:&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">&nbsp;setprecision(</span><span style="color: #000000; ">15</span><span style="color: #000000; ">)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">double</span><span style="color: #000000; ">)</span><span style="color: #000000; ">1.2345234234</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;LOG4CPLUS_FATAL(test,&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">This&nbsp;is&nbsp;a&nbsp;long&nbsp;double:&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">&nbsp;setprecision(</span><span style="color: #000000; ">15</span><span style="color: #000000; ">)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">double</span><span style="color: #000000; ">)</span><span style="color: #000000; ">123452342342.342</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;system(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">pause</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />}</span></div>再来看几个输出到日志的小例子:<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">log4cplus</span><span style="color: #000000; ">/</span><span style="color: #000000; ">logger.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">log4cplus</span><span style="color: #000000; ">/</span><span style="color: #000000; ">fileappender.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">log4cplus</span><span style="color: #000000; ">/</span><span style="color: #000000; ">layout.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">log4cplus</span><span style="color: #000000; ">/</span><span style="color: #000000; ">ndc.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">log4cplus</span><span style="color: #000000; ">/</span><span style="color: #000000; ">helpers</span><span style="color: #000000; ">/</span><span style="color: #000000; ">loglog.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br /><br /></span><span style="color: #0000FF; ">using</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">namespace</span><span style="color: #000000; ">&nbsp;log4cplus;<br /><br /></span><span style="color: #0000FF; ">const</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;LOOP_COUNT&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">20000</span><span style="color: #000000; ">;<br /><br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;main()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;helpers::LogLog::getLogLog()</span><span style="color: #000000; ">-&gt;</span><span style="color: #000000; ">setInternalDebugging(</span><span style="color: #0000FF; ">true</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;SharedAppenderPtr&nbsp;append_1(</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;RollingFileAppender(LOG4CPLUS_TEXT(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Test.log</span><span style="color: #000000; ">"</span><span style="color: #000000; ">),</span><span style="color: #000000; ">5</span><span style="color: #000000; ">*</span><span style="color: #000000; ">1024</span><span style="color: #000000; ">,</span><span style="color: #000000; ">5</span><span style="color: #000000; ">));<br />&nbsp;&nbsp;&nbsp;&nbsp;append_1</span><span style="color: #000000; ">-&gt;</span><span style="color: #000000; ">setName(LOG4CPLUS_TEXT(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">LOG4PLUS</span><span style="color: #000000; ">"</span><span style="color: #000000; ">));<br />&nbsp;&nbsp;&nbsp;&nbsp;append_1</span><span style="color: #000000; ">-&gt;</span><span style="color: #000000; ">setLayout(std::auto_ptr</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">Layout</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;TTCCLayout()));<br />&nbsp;&nbsp;&nbsp;&nbsp;Logger::getRoot().addAppender(append_1);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;Logger&nbsp;root&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;Logger::getRoot();<br />&nbsp;&nbsp;&nbsp;&nbsp;Logger&nbsp;test&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;Logger::getInstance(LOG4CPLUS_TEXT(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">test</span><span style="color: #000000; ">"</span><span style="color: #000000; ">));<br />&nbsp;&nbsp;&nbsp;&nbsp;Logger&nbsp;subTest&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;Logger::getInstance(LOG4CPLUS_TEXT(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">test.subtest</span><span style="color: #000000; ">"</span><span style="color: #000000; ">));<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;&nbsp;i</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">LOOP_COUNT;&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">i)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NDCContextCreator&nbsp;_context(LOG4CPLUS_TEXT(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">loop</span><span style="color: #000000; ">"</span><span style="color: #000000; ">));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LOG4CPLUS_DEBUG(subTest,&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Entering&nbsp;loop&nbsp;#</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">&nbsp;i);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; "><br />}<br /><br />几点说明:<br />1.setInternalDebuging 是启用内部调试日志，不过具体作用不是很明确<br />2.Appender是实现日志输出的策略描述<br />一般情况下，参考以上例子就足够了<br /></span></div><img src ="http://www.cppblog.com/gaimor/aggbug/168027.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/gaimor/" target="_blank">ccsdu2009</a> 2012-03-15 22:22 <a href="http://www.cppblog.com/gaimor/archive/2012/03/15/168027.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>GUI库分块</title><link>http://www.cppblog.com/gaimor/archive/2011/05/06/145856.html</link><dc:creator>ccsdu2009</dc:creator><author>ccsdu2009</author><pubDate>Fri, 06 May 2011 14:44:00 GMT</pubDate><guid>http://www.cppblog.com/gaimor/archive/2011/05/06/145856.html</guid><wfw:comment>http://www.cppblog.com/gaimor/comments/145856.html</wfw:comment><comments>http://www.cppblog.com/gaimor/archive/2011/05/06/145856.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cppblog.com/gaimor/comments/commentRss/145856.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/gaimor/services/trackbacks/145856.html</trackback:ping><description><![CDATA[嗯&nbsp;GUI库应该分为几个大的模块呢? :)我想<br><br>这次的GUI库我会采用类似GUICHAN的方式，具体的GUI并不依赖于特定的图形接口，而是采取插件的方式动态加载，这样有助于提高其使用的广度<br>应该包含一个GUIRender<br><br>另外GUI库涉及面比较广，需要有大量附加的数据结构比如XML，图形处理，向量，插件，基本对象，日志等。我们应该再加一个辅助库<br>于是有一个叫做Util的东西<br><br>其次我们主要的GUI库类<br>这个是核心<br>我暂时给他起个名字叫coregui吧<br>这个是这个GUi的核心<br>其功能除了一般的GUI控件对象之后还应该有控件工厂，控件池(管理器)，控件数据串行化，控件布局，控件编辑，控件动态加载，脚本处理等功能（想想功能还比较多-不过总比之前做的游戏引擎量要小很多）<br><br>分块就这么几个了<br><br>在开发过程中，我会一个一个GUI对象都贴上来，然后说明为什么要这样做，并附上可能对应的设计模式（要活学活用(⊙v⊙)?）<br><br>PS:其实一个比较好的办法是借助于UML，可是我现在忘了这几个字母如何写，有空学学吧 
<img src ="http://www.cppblog.com/gaimor/aggbug/145856.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/gaimor/" target="_blank">ccsdu2009</a> 2011-05-06 22:44 <a href="http://www.cppblog.com/gaimor/archive/2011/05/06/145856.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>设计模式-原型方法</title><link>http://www.cppblog.com/gaimor/archive/2011/05/06/145852.html</link><dc:creator>ccsdu2009</dc:creator><author>ccsdu2009</author><pubDate>Fri, 06 May 2011 14:22:00 GMT</pubDate><guid>http://www.cppblog.com/gaimor/archive/2011/05/06/145852.html</guid><wfw:comment>http://www.cppblog.com/gaimor/comments/145852.html</wfw:comment><comments>http://www.cppblog.com/gaimor/archive/2011/05/06/145852.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/gaimor/comments/commentRss/145852.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/gaimor/services/trackbacks/145852.html</trackback:ping><description><![CDATA[一般来说 原型方法主要使用于快速生成和已存在对象基本一致的对象。<br>一般典型的例子是细胞分裂和孙悟空变换出N的小猴子<br>不过我这里举一个在GUI设计过程的例子<br><br>假如一个面板上的同质按钮，他们仅文本不同，代表的逻辑不同，其他信息是完全一致的，比如皮肤，边框，大小等<br>按照一般方法可能会这样构造面板<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">Button</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;btn1&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;Button();<br>btn1</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">SetSize(..);<br>btn1</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">SetBorder(..);<br>btn1</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">SetListener(..);<br>btn1</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">SetVisible(</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">);<br>btn1</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">SetParent(panel);<br>btn1</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">SetColor(<img src="http://www.cppblog.com/Images/dot.gif">)<br>Button</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;btn2&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">..<br>当然还有其他按钮:)<br>&nbsp;</span></div>
是不是很烦?<br>借助原型模式<br>可以大大的简化!<br>比如:<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">Button&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">btn1&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;Button(panel);<br>Button&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">btn2</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;btn1</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">Clone();<br>Button&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">btn3</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;btn1</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">Clone();<br>Button&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">btn4</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;btn1</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">Clone();<br>然后只要设置各个按钮对应的文本即可</span></div>
为了使用原型方法我们需要做的仅仅是<br>给对象增加Clone接口和其实现即可<br>比如:<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;AbstractWidget<br>{<br></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;virtual&nbsp;AbstractWidget</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;Clone()&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="http://www.cppblog.com/Images/dot.gif"><br>};</span></div>
<br>需要说明的是原型一般使用的是浅拷贝
<img src ="http://www.cppblog.com/gaimor/aggbug/145852.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/gaimor/" target="_blank">ccsdu2009</a> 2011-05-06 22:22 <a href="http://www.cppblog.com/gaimor/archive/2011/05/06/145852.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何书写权威的程序库头文件</title><link>http://www.cppblog.com/gaimor/archive/2011/03/17/142057.html</link><dc:creator>ccsdu2009</dc:creator><author>ccsdu2009</author><pubDate>Thu, 17 Mar 2011 08:39:00 GMT</pubDate><guid>http://www.cppblog.com/gaimor/archive/2011/03/17/142057.html</guid><wfw:comment>http://www.cppblog.com/gaimor/comments/142057.html</wfw:comment><comments>http://www.cppblog.com/gaimor/archive/2011/03/17/142057.html#Feedback</comments><slash:comments>11</slash:comments><wfw:commentRss>http://www.cppblog.com/gaimor/comments/commentRss/142057.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/gaimor/services/trackbacks/142057.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.cppblog.com/gaimor/archive/2011/03/17/142057.html'>阅读全文</a><img src ="http://www.cppblog.com/gaimor/aggbug/142057.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/gaimor/" target="_blank">ccsdu2009</a> 2011-03-17 16:39 <a href="http://www.cppblog.com/gaimor/archive/2011/03/17/142057.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>