﻿<?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++博客-Error-随笔分类-boost</title><link>http://www.cppblog.com/Error/category/20472.html</link><description /><language>zh-cn</language><lastBuildDate>Thu, 29 May 2014 20:24:05 GMT</lastBuildDate><pubDate>Thu, 29 May 2014 20:24:05 GMT</pubDate><ttl>60</ttl><item><title>boost signals solt 01   暂时无法理解的坑</title><link>http://www.cppblog.com/Error/archive/2014/05/30/207147.html</link><dc:creator>Enic</dc:creator><author>Enic</author><pubDate>Thu, 29 May 2014 17:09:00 GMT</pubDate><guid>http://www.cppblog.com/Error/archive/2014/05/30/207147.html</guid><wfw:comment>http://www.cppblog.com/Error/comments/207147.html</wfw:comment><comments>http://www.cppblog.com/Error/archive/2014/05/30/207147.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Error/comments/commentRss/207147.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Error/services/trackbacks/207147.html</trackback:ping><description><![CDATA[<div>// boost_singal_solt.cpp : Defines the entry point for the console application.</div><div>//</div><div></div><div>#include "stdafx.h"</div><div></div><div>#include &lt;iostream&gt;</div><div>#include &lt;string&gt;</div><div>#include &lt;boost/signals2.hpp&gt;</div><div></div><div>class CTarget /*: public boost::signals2::trackable*/</div><div>{</div><div>public:</div><div>&nbsp; &nbsp; virtual ~CTarget()</div><div>&nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; std::cout &lt;&lt; __FUNCTION__ &lt;&lt; std::endl;</div><div>&nbsp; &nbsp; }</div><div></div><div>&nbsp; &nbsp; CTarget()</div><div>&nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; m_strMsg = "1343rwkjdfkjdfasdklf";</div><div>&nbsp; &nbsp; }</div><div></div><div>&nbsp; &nbsp; void SomeHandle()</div><div>&nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; std::cout &lt;&lt; __FUNCTION__ &lt;&lt; std::endl;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; std::cout &lt;&lt; m_strMsg &lt;&lt; std::endl;</div><div>&nbsp; &nbsp; }</div><div></div><div>&nbsp; &nbsp; void SomeHandle1()</div><div>&nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; std::cout &lt;&lt; __FUNCTION__ &lt;&lt; std::endl;</div><div>&nbsp; &nbsp; }</div><div></div><div>private:</div><div>&nbsp; &nbsp; std::string m_strMsg;</div><div>};</div><div></div><div>class CSource</div><div>{</div><div>public:</div><div>&nbsp; &nbsp; boost::signals2::connection Connect(const boost::signals2::signal&lt;void(void)&gt;::slot_type &amp;sub)</div><div>&nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; return m_sig.connect(sub);</div><div>&nbsp; &nbsp; }</div><div></div><div>&nbsp; &nbsp; void OnSig()</div><div>&nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; m_sig();</div><div>&nbsp; &nbsp; }</div><div></div><div>private:</div><div>&nbsp; &nbsp; boost::signals2::signal&lt;void(void)&gt; m_sig;</div><div>};</div><div></div><div>int _tmain(int argc, _TCHAR* argv[])</div><div>{</div><div>&nbsp; &nbsp; CSource source;</div><div></div><div>&nbsp; &nbsp; boost::signals2::connection conn;</div><div></div><div>&nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; CTarget target;</div><div>&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; /*conn = */source.Connect(boost::bind(&amp;CTarget::SomeHandle, &amp;target));</div><div>&nbsp; &nbsp; &nbsp; &nbsp; source.Connect(boost::bind(&amp;CTarget::SomeHandle1, &amp;target));</div><div></div><div>&nbsp; &nbsp; &nbsp; &nbsp; source.OnSig();</div><div>&nbsp; &nbsp; }</div><div></div><div>&nbsp; &nbsp; source.OnSig();</div><div></div><div><span style="white-space:pre">	</span>return 0;</div><div>}</div><div><br /><br />在继承boost::signals2::trackable的情况下，Target析构以后不会调用，但是不继承是会调用的。也就是说，这是一个危险操作，不知道内部怎么管理的，会不会出现内存泄漏？<br />/////////////////////////////////////////////////////////////////////////////<br /><br /><br /><div>// boost_singal_solt.cpp : Defines the entry point for the console application.</div><div>//</div><div></div><div>#include "stdafx.h"</div><div></div><div>#include &lt;iostream&gt;</div><div>#include &lt;string&gt;</div><div>#include &lt;boost/signals2.hpp&gt;</div><div></div><div></div><div></div><div>class CSource</div><div>{</div><div>public:</div><div>&nbsp; &nbsp; boost::signals2::connection Connect(const boost::signals2::signal&lt;void(void)&gt;::slot_type &amp;sub)</div><div>&nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; return m_sig.connect(sub);</div><div>&nbsp; &nbsp; }</div><div></div><div>&nbsp; &nbsp; void OnSig()</div><div>&nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; m_sig();</div><div>&nbsp; &nbsp; }</div><div></div><div>private:</div><div>&nbsp; &nbsp; boost::signals2::signal&lt;void(void)&gt; m_sig;</div><div>};</div><div></div><div>class CTarget : public boost::signals2::trackable</div><div>{</div><div>public:</div><div>&nbsp; &nbsp; virtual ~CTarget()</div><div>&nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; std::cout &lt;&lt; __FUNCTION__ &lt;&lt; std::endl;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; m_con.disconnect();</div><div>&nbsp; &nbsp; }</div><div></div><div>&nbsp; &nbsp; CTarget()</div><div>&nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; m_strMsg = "1343rwkjdfkjdfasdklf";</div><div>&nbsp; &nbsp; }</div><div></div><div>&nbsp; &nbsp; void RegisterSolts(CSource&amp; source)</div><div>&nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; m_con = source.Connect(boost::bind(&amp;CTarget::SomeHandle, this));</div><div>&nbsp; &nbsp; }</div><div></div><div>&nbsp; &nbsp; void SomeHandle()</div><div>&nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; std::cout &lt;&lt; __FUNCTION__ &lt;&lt; std::endl;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; std::cout &lt;&lt; m_strMsg &lt;&lt; std::endl;</div><div>&nbsp; &nbsp; }</div><div></div><div>&nbsp; &nbsp; void SomeHandle1()</div><div>&nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; std::cout &lt;&lt; __FUNCTION__ &lt;&lt; std::endl;</div><div>&nbsp; &nbsp; }</div><div></div><div>private:</div><div>&nbsp; &nbsp; std::string m_strMsg;</div><div>&nbsp; &nbsp; boost::signals2::connection m_con;</div><div>};</div><div></div><div>int _tmain(int argc, _TCHAR* argv[])</div><div>{</div><div>&nbsp; &nbsp; CSource source;</div><div></div><div>&nbsp; &nbsp; boost::signals2::connection conn;</div><div></div><div>&nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; CTarget target;</div><div>&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; target.RegisterSolts(source);</div><div></div><div>&nbsp; &nbsp; &nbsp; &nbsp; //source.OnSig();</div><div>&nbsp; &nbsp; }</div><div></div><div>&nbsp; &nbsp; source.OnSig();</div><div></div><div><span style="white-space:pre">	</span>return 0;</div><div>}</div><div>确认只要维护好connection在对象target析构以后一定是disconnect应该就OK没事，，，<br /><br /><br /><br /><br /><br />///////////////////////////////////////////<br /><br /><br />整体上看来是这样：<br />问题：target的成员函数和this指针打包注册到source上以后，如果target析构，source无法感知到，可能会调用已经成为野指针的target地址。<br />解决：signals2库的解决办法是，用一个connection来维护打包的target成员函数和source上的signal的连接关系。target持有这个connection，当自身析构的时候必须调用disscontion解除这个关系。<br /><br />如果要抄袭，也是要设计一种机制，在target析构的时候，想办法清除它在别处注册的函数指针。<br />1.可以建立target到source的关系，target析构以后通知source，souce清理自身保留的target相关打包函数。这种方式在使用boost bind的时候可能就有问题了，应为之依靠target指针去判断bind出来的function有难度。<br />2.建立关系的时候就将解除关系的函数打包到一个新的对象中，然后由target负责在自己析构的时候去调用它。<br /><br />！！！如果source先于target析构，就悲剧了。但是实际情况是，如果source已经析构了，也无法触发target绑定的函数了。但问题是，target析构的时候还是去触发source绑定到target的解除关系的函数。悲催。但是实际测试这个问题不存在，估计是用类似weak_ptr的技术。<br />在完全理解之前，务必保证source生命周期大于target<br /><div>// boost_singal_solt.cpp : Defines the entry point for the console application.</div><div>//</div><div></div><div>#include "stdafx.h"</div><div></div><div>#include &lt;iostream&gt;</div><div>#include &lt;string&gt;</div><div>#include &lt;boost/signals2.hpp&gt;</div><div></div><div></div><div></div><div>class CSource</div><div>{</div><div>public:</div><div>&nbsp; &nbsp; boost::signals2::connection Connect(const boost::signals2::signal&lt;void(void)&gt;::slot_type &amp;sub)</div><div>&nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; return m_sig.connect(sub);</div><div>&nbsp; &nbsp; }</div><div></div><div>&nbsp; &nbsp; void OnSig()</div><div>&nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; m_sig();</div><div>&nbsp; &nbsp; }</div><div></div><div>private:</div><div>&nbsp; &nbsp; boost::signals2::signal&lt;void(void)&gt; m_sig;</div><div>};</div><div></div><div>class CTarget : public boost::signals2::trackable</div><div>{</div><div>public:</div><div>&nbsp; &nbsp; virtual ~CTarget()</div><div>&nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; //std::cout &lt;&lt; __FUNCTION__ &lt;&lt; std::endl;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; m_con.disconnect();</div><div>&nbsp; &nbsp; }</div><div></div><div>&nbsp; &nbsp; CTarget()</div><div>&nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; m_strMsg = "1343rwkjdfkjdfasdklf";</div><div>&nbsp; &nbsp; }</div><div></div><div>&nbsp; &nbsp; void RegisterSolts(CSource&amp; source)</div><div>&nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; m_con = source.Connect(boost::bind(&amp;CTarget::SomeHandle, this));</div><div>&nbsp; &nbsp; }</div><div></div><div>&nbsp; &nbsp; void SomeHandle()</div><div>&nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; std::cout &lt;&lt; __FUNCTION__ &lt;&lt; std::endl;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; std::cout &lt;&lt; m_strMsg &lt;&lt; std::endl;</div><div>&nbsp; &nbsp; }</div><div></div><div>&nbsp; &nbsp; void SomeHandle1()</div><div>&nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; std::cout &lt;&lt; __FUNCTION__ &lt;&lt; std::endl;</div><div>&nbsp; &nbsp; }</div><div></div><div>private:</div><div>&nbsp; &nbsp; std::string m_strMsg;</div><div>&nbsp; &nbsp; boost::signals2::connection m_con;</div><div>};</div><div></div><div>int _tmain(int argc, _TCHAR* argv[])</div><div>{</div><div>&nbsp; &nbsp; for (;;)</div><div>&nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; CSource* pSource = new CSource;</div><div></div><div>&nbsp; &nbsp; &nbsp; &nbsp; boost::signals2::connection conn;</div><div></div><div>&nbsp; &nbsp; &nbsp; &nbsp; CTarget* pTarget = new CTarget;</div><div></div><div>&nbsp; &nbsp; &nbsp; &nbsp; pTarget-&gt;RegisterSolts(*pSource);</div><div>&nbsp; &nbsp; &nbsp; &nbsp; delete pSource;</div><div></div><div>&nbsp; &nbsp; &nbsp; &nbsp; delete pTarget;</div><div>&nbsp; &nbsp; }</div><div></div><div>&nbsp; &nbsp; //source.OnSig();</div><div></div><div><span style="white-space:pre">	</span>return 0;</div><div>}</div><div></div><br />////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////<br /><br />没有完全读明白之前，在需要7&#215;24运行的环境还是慎重使用。不过客户端貌似无所谓，，，囧。</div></div><img src ="http://www.cppblog.com/Error/aggbug/207147.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Error/" target="_blank">Enic</a> 2014-05-30 01:09 <a href="http://www.cppblog.com/Error/archive/2014/05/30/207147.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>利用boost做string到wstring转换，以及字符集转换</title><link>http://www.cppblog.com/Error/archive/2014/02/09/205684.html</link><dc:creator>Enic</dc:creator><author>Enic</author><pubDate>Sun, 09 Feb 2014 04:34:00 GMT</pubDate><guid>http://www.cppblog.com/Error/archive/2014/02/09/205684.html</guid><wfw:comment>http://www.cppblog.com/Error/comments/205684.html</wfw:comment><comments>http://www.cppblog.com/Error/archive/2014/02/09/205684.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Error/comments/commentRss/205684.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Error/services/trackbacks/205684.html</trackback:ping><description><![CDATA[<div>#include &lt;boost/locale.hpp&gt;</div><div></div><div></div><div>int _tmain(int argc, _TCHAR* argv[])</div><div>{</div><div><span style="white-space:pre">	</span>//std::locale::global(std::locale("utf-8"));</div><div><span style="white-space:pre">	</span>std::locale::global(std::locale("")); &nbsp;// 设置全局的C运行库locale &nbsp;可以针对cout &nbsp;fstream等单独设置 空表示默认使用当前系统字符集</div><div></div><div><span style="white-space:pre">	</span>std::string strGbk = "天朝的方式开发刻录机卡洛斯分123qwerwer繫";</div><div><span style="white-space:pre">	</span>std::wstring wstr = boost::locale::conv::to_utf&lt;wchar_t&gt;(strGbk, "gbk");</div><div><span style="white-space:pre">	</span>std::string strA = boost::locale::conv::from_utf(wstr, "GBK");</div><div></div><div><span style="white-space:pre">	</span>std::cout &lt;&lt; strGbk.c_str() &lt;&lt; std::endl;</div><div><span style="white-space:pre">	</span>std::wcout &lt;&lt; wstr.c_str() &lt;&lt; std::endl;</div><div><span style="white-space:pre">	</span>std::cout &lt;&lt; strA.c_str() &lt;&lt; std::endl;</div><div></div><div><span style="white-space:pre">	</span>try</div><div><span style="white-space:pre">	</span>{</div><div><span style="white-space:pre">		</span>std::string strBit5;</div><div></div><div><span style="white-space:pre">		</span>strBit5 = boost::locale::conv::between(strA, "big5", "gbk");</div><div><span style="white-space:pre">		</span>strA = boost::locale::conv::between(strBit5, "GBK", "BIG5");</div><div><span style="white-space:pre">	</span>}</div><div><span style="white-space:pre">	</span>catch (std::exception&amp; e)</div><div><span style="white-space:pre">	</span>{</div><div><span style="white-space:pre">		</span>std::cout &lt;&lt; e.what() &lt;&lt; std::endl;</div><div><span style="white-space:pre">	</span>}</div><div><span style="white-space:pre">	</span>catch (...)</div><div><span style="white-space:pre">	</span>{</div><div><span style="white-space:pre">		</span>std::cout &lt;&lt; "..." &lt;&lt; std::endl;</div><div><span style="white-space:pre">	</span>}</div><div><span style="white-space:pre">	</span></div><div></div><div><span style="white-space:pre">	</span>std::cout &lt;&lt; __FUNCTION__ &lt;&lt; std::endl;</div><div></div><div><span style="white-space:pre">	</span>return 0;</div><div>}</div><img src ="http://www.cppblog.com/Error/aggbug/205684.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Error/" target="_blank">Enic</a> 2014-02-09 12:34 <a href="http://www.cppblog.com/Error/archive/2014/02/09/205684.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>boost::split</title><link>http://www.cppblog.com/Error/archive/2013/04/11/199325.html</link><dc:creator>Enic</dc:creator><author>Enic</author><pubDate>Wed, 10 Apr 2013 16:29:00 GMT</pubDate><guid>http://www.cppblog.com/Error/archive/2013/04/11/199325.html</guid><wfw:comment>http://www.cppblog.com/Error/comments/199325.html</wfw:comment><comments>http://www.cppblog.com/Error/archive/2013/04/11/199325.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Error/comments/commentRss/199325.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Error/services/trackbacks/199325.html</trackback:ping><description><![CDATA[<div><div>搞了搞split，发现boost里边已经有了，就拿过来直接用，之前翻了下facebook的，也没见比boost更容易读，还是boost算了。<br />在vs2012上编译了一下，发现有问题：error C4996: 'std::_Copy_impl': Function call with para<br /><br />找了下，老外是这么说的：http://stackoverflow.com/questions/14141476/warning-with-boostsplit-when-compiling<br /><span class="Apple-style-span" style="font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif; line-height: 18px; background-color: #ffffff; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; clear: both; word-wrap: break-word; background-position: initial initial; background-repeat: initial initial; ">You haven't done anything wrong. Visual Studio is being overly cautious. In debug mode, visual studio uses something called "Checked Iterators". Pointers are also iterators, but the checking mechanism doesn't work with them. So when a standard library algorithm is called with pointers, which is something that&nbsp;<code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 1px; padding-right: 5px; padding-bottom: 1px; padding-left: 5px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #eeeeee; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; background-position: initial initial; background-repeat: initial initial; ">boost::split</code>&nbsp;does, it issues this warning.</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; clear: both; word-wrap: break-word; background-position: initial initial; background-repeat: initial initial; ">You'll get the same warning with this obviously safe code:</p><pre class="lang-c prettyprint prettyprinted" style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #eeeeee; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; overflow-x: auto; overflow-y: auto; width: auto; max-height: 600px; background-position: initial initial; background-repeat: initial initial; "><code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #eeeeee; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; background-position: initial initial; background-repeat: initial initial; "><span class="typ" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #2b91af; background-position: initial initial; background-repeat: initial initial; ">int</span><span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #000000; background-position: initial initial; background-repeat: initial initial; "> main</span><span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #000000; background-position: initial initial; background-repeat: initial initial; ">()</span><span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #000000; background-position: initial initial; background-repeat: initial initial; ">
</span><span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #000000; background-position: initial initial; background-repeat: initial initial; ">{</span><span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #000000; background-position: initial initial; background-repeat: initial initial; ">
    </span><span class="typ" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #2b91af; background-position: initial initial; background-repeat: initial initial; ">int</span><span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #000000; background-position: initial initial; background-repeat: initial initial; "> x</span><span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #000000; background-position: initial initial; background-repeat: initial initial; ">[</span><span class="lit" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #800000; background-position: initial initial; background-repeat: initial initial; ">10</span><span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #000000; background-position: initial initial; background-repeat: initial initial; ">]</span><span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #000000; background-position: initial initial; background-repeat: initial initial; "> </span><span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #000000; background-position: initial initial; background-repeat: initial initial; ">=</span><span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #000000; background-position: initial initial; background-repeat: initial initial; "> </span><span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #000000; background-position: initial initial; background-repeat: initial initial; ">{};</span><span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #000000; background-position: initial initial; background-repeat: initial initial; ">
    </span><span class="typ" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #2b91af; background-position: initial initial; background-repeat: initial initial; ">int</span><span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #000000; background-position: initial initial; background-repeat: initial initial; "> y</span><span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #000000; background-position: initial initial; background-repeat: initial initial; ">[</span><span class="lit" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #800000; background-position: initial initial; background-repeat: initial initial; ">10</span><span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #000000; background-position: initial initial; background-repeat: initial initial; ">]</span><span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #000000; background-position: initial initial; background-repeat: initial initial; "> </span><span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #000000; background-position: initial initial; background-repeat: initial initial; ">=</span><span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #000000; background-position: initial initial; background-repeat: initial initial; "> </span><span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #000000; background-position: initial initial; background-repeat: initial initial; ">{};</span><span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #000000; background-position: initial initial; background-repeat: initial initial; ">
    </span><span class="typ" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #2b91af; background-position: initial initial; background-repeat: initial initial; ">int</span><span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #000000; background-position: initial initial; background-repeat: initial initial; "> </span><span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #000000; background-position: initial initial; background-repeat: initial initial; ">*</span><span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #000000; background-position: initial initial; background-repeat: initial initial; ">a </span><span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #000000; background-position: initial initial; background-repeat: initial initial; ">=</span><span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #000000; background-position: initial initial; background-repeat: initial initial; "> x</span><span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #000000; background-position: initial initial; background-repeat: initial initial; ">,</span><span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #000000; background-position: initial initial; background-repeat: initial initial; "> </span><span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #000000; background-position: initial initial; background-repeat: initial initial; ">*</span><span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #000000; background-position: initial initial; background-repeat: initial initial; ">b </span><span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #000000; background-position: initial initial; background-repeat: initial initial; ">=</span><span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #000000; background-position: initial initial; background-repeat: initial initial; "> y</span><span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #000000; background-position: initial initial; background-repeat: initial initial; ">;</span><span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #000000; background-position: initial initial; background-repeat: initial initial; ">
    std</span><span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #000000; background-position: initial initial; background-repeat: initial initial; ">::</span><span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #000000; background-position: initial initial; background-repeat: initial initial; ">copy</span><span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #000000; background-position: initial initial; background-repeat: initial initial; ">(</span><span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #000000; background-position: initial initial; background-repeat: initial initial; ">a</span><span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #000000; background-position: initial initial; background-repeat: initial initial; ">,</span><span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #000000; background-position: initial initial; background-repeat: initial initial; "> a</span><span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #000000; background-position: initial initial; background-repeat: initial initial; ">+</span><span class="lit" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #800000; background-position: initial initial; background-repeat: initial initial; ">10</span><span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #000000; background-position: initial initial; background-repeat: initial initial; ">,</span><span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #000000; background-position: initial initial; background-repeat: initial initial; "> b</span><span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #000000; background-position: initial initial; background-repeat: initial initial; ">);</span><span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #000000; background-position: initial initial; background-repeat: initial initial; ">
</span><span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #000000; background-position: initial initial; background-repeat: initial initial; ">}</span></code></pre><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; clear: both; word-wrap: break-word; background-position: initial initial; background-repeat: initial initial; ">Disable the warning. It's for beginners. It's on by default for the safety of beginners, because if it was off by default, they wouldn't know how to turn it on.</p></span><br /><br /><br /><br />#include &lt;boost/algorithm/string/classification.hpp&gt;</div><div>#include &lt;boost/algorithm/string.hpp&gt;</div><div></div><div>void LearnSplit()</div><div>{</div><div>&nbsp; &nbsp; std::string strTem("1,2,3,4");</div><div>&nbsp; &nbsp; std::list&lt;std::string&gt; listStrTem;</div><div>&nbsp; &nbsp; std::vector&lt;std::string&gt; vectorStrTem;</div><div>&nbsp; &nbsp; boost::split(listStrTem, strTem, boost::is_any_of(","));</div><div>&nbsp; &nbsp; boost::split(vectorStrTem, strTem, boost::is_any_of(","));</div><div></div><div>&nbsp; &nbsp; for(auto item : listStrTem)</div><div>&nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; std::cout &lt;&lt; item.c_str() &lt;&lt; std::endl;</div><div>&nbsp; &nbsp; }</div><div></div><div>&nbsp; &nbsp; std::string s = "Hello, the beautiful world!";</div><div>&nbsp; &nbsp; std::vector&lt;std::string&gt; rs;</div><div>&nbsp; &nbsp; boost::split( rs, s, boost::is_any_of( " ,!" ), boost::token_compress_on );</div><div>}</div><div></div><div>int _tmain(int argc, _TCHAR* argv[])</div><div>{</div><div>&nbsp; &nbsp; LearnSplit();</div><div></div><div><span style="white-space:pre">	</span>return 0;</div><div>}</div></div><img src ="http://www.cppblog.com/Error/aggbug/199325.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Error/" target="_blank">Enic</a> 2013-04-11 00:29 <a href="http://www.cppblog.com/Error/archive/2013/04/11/199325.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>