字元串分割經常用到,這裡做一個記錄。友善查閱。
1.使用strtok();其中
采用strtok(),分隔符可以是多種,如 * ,#中的一種或幾種的組合
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<code>vector<string> stringSplit(string s, </code><code>const</code> <code>char</code> <code>* split)</code>
<code>{</code>
<code> </code><code>vector<string> result;</code>
<code> </code><code>const</code> <code>int</code> <code>sLen = s.length();</code>
<code> </code><code>char</code> <code>*cs = </code><code>new</code> <code>char</code><code>[sLen + 1];</code>
<code> </code><code>strcpy</code><code>(cs, s.data());</code>
<code> </code><code>char</code> <code>*p;</code>
<code> </code><code>p = </code><code>strtok</code><code>(cs, split);</code>
<code> </code><code>while</code> <code>(p)</code>
<code> </code><code>{</code>
<code> </code><code>printf</code><code>(</code><code>"%s\n"</code><code>, p);</code>
<code> </code><code>string tmp(p);</code>
<code> </code><code>result.push_back(tmp);</code>
<code> </code><code>p = </code><code>strtok</code><code>(NULL, split);</code>
<code> </code><code>}</code>
<code> </code><code>return</code> <code>result;</code>
<code>}</code>
2.使用string.substr();其中
采用string.substr(),分隔符隻能是一種,如 * ,#中的一種
<code>vector<string> vec;</code>
<code>int</code> <code>j = 0;</code>
<code>for</code> <code>(</code><code>int</code> <code>i = 0; i<str.size(); i++){</code>
<code> </code><code>if</code> <code>(str[i] == </code><code>' '</code><code>){</code>
<code> </code><code>string tmp = str.substr(j, i - j);</code>
<code> </code><code>vec.push_back(tmp);</code>
<code> </code><code>j = i + 1;</code>
<code> </code><code>if</code> <code>(i == str.size() - 1){</code>
<code> </code><code>string tmp = str.substr(j, i - j + 1);</code>
<code></code>
本文轉自313119992 51CTO部落格,原文連結:http://blog.51cto.com/qiaopeng688/1836430