天天看點

C++字元串分割

字元串分割經常用到,這裡做一個記錄。友善查閱。

1.使用strtok();其中

采用strtok(),分隔符可以是多種,如 * ,#中的一種或幾種的組合

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

<code>vector&lt;string&gt; stringSplit(string s, </code><code>const</code> <code>char</code> <code>* split)</code>

<code>{</code>

<code>    </code><code>vector&lt;string&gt; 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&lt;string&gt; vec;</code>

<code>int</code> <code>j = 0;</code>

<code>for</code> <code>(</code><code>int</code> <code>i = 0; i&lt;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

繼續閱讀