<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://jackxiang.com/post//</link>
<title><![CDATA[我想找一个类似于java中split那样的函数,支持C++字符串分割 ]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Thu, 18 Nov 2010 15:39:21 +0000</pubDate> 
<guid>http://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	我想找一个类似于java中split那样的函数,支持C++字符串分割 <br/>比如 <br/>aabe(bbb)iefjij(bbb)(bbb) <br/>用(bbb)分割得到 <br/>aabe <br/>iefjij <br/>fjdkfji <br/><br/>注:不用CString <br/><br/><br/>今天用c++写了个分割字符串的函数，老是内存报错。在网上搜搜发现c的一个函数就可以搞定。<br/><br/>汗啊 <br/><br/>c++<br/><br/>==========<br/><br/><br/><br/><div class="code">#include &quot;stdafx.h&quot;<br/><br/>#include &lt;windows.h&gt; <br/>//查找字符串中的制定字符,并返回字符的位置<br/>int strstrFindPos(char srcstr&#91;&#93;,char deststr&#91;&#93; )<br/>&#123;<br/>int j=0;<br/>for (int i=0;srcstr&#91;i&#93;!=&#039;&#92;0&#039;;i++)<br/>&#123;<br/>&nbsp;&nbsp; if (deststr&#91;0&#93;==srcstr&#91;i&#93;)<br/>&nbsp;&nbsp; &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;while (deststr&#91;j&#93;!=&#039;&#92;0&#039;&amp;&amp;srcstr&#91;i+j&#93;!=&#039;&#92;0&#039;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp; j++;<br/>&nbsp;&nbsp;&nbsp;&nbsp; if (deststr&#91;j&#93;!=srcstr&#91;i+j&#93;)<br/>&nbsp;&nbsp;&nbsp;&nbsp; &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br/>&nbsp;&nbsp;&nbsp;&nbsp; &#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp; &#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (deststr&#91;j&#93;==&#039;&#92;0&#039;)<br/>&nbsp;&nbsp; &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;return i; <br/>&nbsp;&nbsp; &#125;<br/>&#125;<br/>return -1;<br/>&#125; <br/>//截取字符串中的位置1到位置2的字符串<br/>char* substr(char *des, char *src, int start, int end)&nbsp;&nbsp; <br/>&#123; <br/>int i =0; <br/>while(*src&nbsp;&nbsp; !=&nbsp;&nbsp; &#039;&#92;0&#039;) <br/>&#123; <br/>&nbsp;&nbsp; if((i &gt;= start)&amp;&amp;(i&lt;=end))&nbsp;&nbsp; <br/>&nbsp;&nbsp; &#123; <br/>&nbsp;&nbsp;&nbsp;&nbsp;*des= *src; //&#91;*&#93; <br/>&nbsp;&nbsp;&nbsp;&nbsp;des++; <br/>&nbsp;&nbsp; &#125;; <br/>&nbsp;&nbsp; i++; <br/>&nbsp;&nbsp; src++; <br/>&#125;; <br/>*des= &#039;&#92;0&#039;; <br/>return des; <br/>&#125;<br/><br/><br/>int main(int argc, char* argv&#91;&#93;)<br/><br/>&#123; <br/>&nbsp;&nbsp; char *cCode = &quot;XXXXXX000000000000000000000001XXXXXX1111111111111111111111111112XXXXXX2222222222222222222223XXXXXX&quot;;<br/>char *cAllCode = new char&#91;&#93;;<br/>char *cTempCode = new char&#91;&#93;;<br/>char *cNeedCode= new char&#91;&#93;;<br/>char *cOnlyCode =&quot;XXXXXX&quot;;<br/>char *cMyData = NULL;<br/>int iPos = -1;<br/>&nbsp;&nbsp; if ( cCode != NULL)<br/>&#123;<br/>&nbsp;&nbsp; strcpy(cAllCode,cCode);<br/><br/>&#125;<br/><br/><br/>do&#123;<br/>&nbsp;&nbsp; substr(cTempCode, cAllCode,6,lstrlen(cAllCode));<br/>&nbsp;&nbsp; iPos = strstrFindPos(cTempCode,cOnlyCode);<br/>&nbsp;&nbsp; if (iPos &gt; -1)<br/>&nbsp;&nbsp; &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;substr(cNeedCode,cTempCode,0,iPos -1);<br/>&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;cNeedCode : %s &#92;n&quot; , cNeedCode);<br/>&nbsp;&nbsp;&nbsp;&nbsp;substr(cAllCode, cTempCode,iPos,lstrlen(cTempCode));<br/>&nbsp;&nbsp; &#125;<br/>&#125;while (iPos &gt; -1);<br/><br/>//&nbsp;&nbsp;&nbsp;&nbsp;delete cTempCode;<br/>//&nbsp;&nbsp;&nbsp;&nbsp;delete cNeedCode;<br/><br/>delete cAllCode;<br/><br/><br/>&nbsp;&nbsp; return 0;<br/><br/>&#125;</div><br/>find实现方法：函数参数类型：int =sting.find(string);<br/><div class="code">#include &lt;iostream&gt;<br/>#include &lt;string.h&gt;<br/>using namespace std;<br/>int main()<br/>&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string a = &quot;aaaAlice&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int pos = a.find(&quot;Alice&quot;);//pos = 3;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;%d&#92;n&quot;,pos);<br/>&#125;</div><br/><br/>c++ substr的用法问题:<br/><br/>我的代码是这样的：<br/>#include &lt;iostream&gt;<br/>#include&lt;string&gt;<br/>using namespace std;<br/>void main()<br/>&#123;<br/> string a;<br/> getline(cin,a);<br/> cout&lt;&lt;a.length()&lt;&lt;endl;<br/> <br/> cout&lt;&lt;a.substr(1,1);<br/>&#125;<br/>输出结果为输入的第二个字符，我很好奇substr中的两个参数是怎么截取中间部分的，还有这个函数的起始字符是用0来表示么？<br/>最佳答案<br/>下面给出解释：<br/>substr 方法<br/>&nbsp;&nbsp;返回一个从指定位置开始，并具有指定长度的子字符串。<br/>&nbsp;&nbsp;参数 <br/>&nbsp;&nbsp;start <br/>&nbsp;&nbsp;必选。所需的子字符串的起始位置。字符串中第一个字符的索引为 0。<br/>&nbsp;&nbsp;length <br/>&nbsp;&nbsp;可选项。返回的子字符串中包含的字符数。<br/>&nbsp;&nbsp;备注 <br/>&nbsp;&nbsp;如果 length 为 0 或负数，将返回一个空字符串。如果没有指定该参数，则子字符串将延续到字符串的结尾。<br/>看了上面这些应该就会明白了！！<br/>来源：http://group.gimoo.net/review/60574
]]>
</description>
</item><item>
<link>http://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] 我想找一个类似于java中split那样的函数,支持C++字符串分割 ]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>