C++ String常用函数

一,类型别名
-----
size_type

无符号整型

iterator

迭代器类型

const_iterator

只读迭代器

reverse_iterator

逆序迭代器

const_reverse_iterator

只读逆序迭代器

different_type

足以存储两个迭代器差值的有符号整型

value_type

元素类型

reference

元素左值类型,是value_type&的同义词

const_reference

元素常量左值类型,是const value_type&的同义词

 
---
*****
二,构造函数
-----

string s1;

默认构造函数

string s2(s1);

初始化为s1的副本

string s3("value");

初始化为字符串字面值的副本

string s4(n,'c');

初始化为n个字符为'c'的副本

string s5(cp,n);

初始化为cp所指数组的前n个字符的副本

string s6(s1,pos);

初始化为s1从下标pos开始的字符的副本

string s7(s1,pos,len);

初始化为s1从下标pos开始长度为len个字符的副本

string s8(b,e);

初始化为迭代器b和e标记范围内的元素的副本

实践操作
---

<div class="snippet-container" style="undefined;"><div class="sh_bright snippet-wrap"><div class="snippet-menu sh_sourceCode" style="display: none;"><pre><a class="snippet-copy sh_url" href="#" style="display: none;">复制</a><a class="snippet-text sh_url" href="#">格式化</a><a class="snippet-window sh_url" href="#">复制</a></pre></div><pre class="cpp sh_cpp snippet-formatted sh_sourceCode" style="display: none;"><ol class="snippet-num"><li><span class="sh_preproc">#include</span> <span class="sh_string">&lt;iostream&gt;</span></li><li><span class="sh_preproc">#include</span> <span class="sh_string">&lt;string&gt;</span></li><li><span class="sh_keyword">u</span><a href="/ref/sin.html" target="_blank" class="sh_url"><span class="sh_keyword">sin</span></a><span class="sh_keyword">g</span> <span class="sh_keyword">namespace</span> std<span class="sh_symbol">;</span></li><li><span style="display:none;">&nbsp;</span></li><li><span class="sh_type">int</span> <span class="sh_function">main</span> <span class="sh_symbol">()</span></li><li><span class="sh_cbracket">{</span></li><li>&nbsp;&nbsp;&nbsp; <span class="sh_usertype">string</span><span class="sh_normal"> </span><span class="sh_function">str</span> <span class="sh_symbol">(</span><span class="sh_string">"12345678"</span><span class="sh_symbol">);</span></li><li>&nbsp;&nbsp;&nbsp; <span class="sh_type">char</span> ch<span class="sh_symbol">[</span> <span class="sh_symbol">]</span> <span class="sh_symbol">=</span> <span class="sh_string">"abcdefgh"</span><span class="sh_symbol">;</span></li><li>&nbsp;&nbsp;&nbsp; <span class="sh_usertype">string</span><span class="sh_normal"> </span>a<span class="sh_symbol">;</span> <span class="sh_comment">//定义一个空字符串</span></li><li>&nbsp;&nbsp;&nbsp; <span class="sh_usertype">string</span><span class="sh_normal"> </span><span class="sh_function">str_1</span> <span class="sh_symbol">(</span>str<span class="sh_symbol">);</span> <span class="sh_comment">//构造函数,全部复制</span></li><li>&nbsp;&nbsp;&nbsp; <span class="sh_usertype">string</span><span class="sh_normal"> </span><span class="sh_function">str_2</span> <span class="sh_symbol">(</span>str<span class="sh_symbol">,</span> <span class="sh_number">2</span><span class="sh_symbol">,</span> <span class="sh_number">5</span><span class="sh_symbol">);</span> <span class="sh_comment">//构造函数,从字符串str的第2个元素开始,复制5个元素,赋值给str_2</span></li><li>&nbsp;&nbsp;&nbsp; <span class="sh_usertype">string</span><span class="sh_normal"> </span><span class="sh_function">str_3</span> <span class="sh_symbol">(</span>ch<span class="sh_symbol">,</span> <span class="sh_number">5</span><span class="sh_symbol">);</span> <span class="sh_comment">//将字符串ch的前5个元素赋值给str_3</span></li><li>&nbsp;&nbsp;&nbsp; <span class="sh_usertype">string</span><span class="sh_normal"> </span><span class="sh_function">str_4</span> <span class="sh_symbol">(</span><span class="sh_number">5</span><span class="sh_symbol">,</span><span class="sh_string">'X'</span><span class="sh_symbol">);</span> <span class="sh_comment">//将 5 个 'X' 组成的字符串 "XXXXX" 赋值给 str_4</span></li><li>&nbsp;&nbsp;&nbsp; <span class="sh_usertype">string</span><span class="sh_normal"> </span><span class="sh_function">str_5</span> <span class="sh_symbol">(</span>str<span class="sh_symbol">.</span><span class="sh_function">begin</span><span class="sh_symbol">(),</span> str<span class="sh_symbol">.</span><span class="sh_function">end</span><span class="sh_symbol">());</span> <span class="sh_comment">//复制字符串 str 的所有元素,并赋值给 str_5</span></li><li>&nbsp;&nbsp;&nbsp; cout <span class="sh_symbol">&lt;&lt;</span> str <span class="sh_symbol">&lt;&lt;</span> endl<span class="sh_symbol">;</span></li><li>&nbsp;&nbsp;&nbsp; cout <span class="sh_symbol">&lt;&lt;</span> a <span class="sh_symbol">&lt;&lt;</span> endl <span class="sh_symbol">;</span></li><li>&nbsp;&nbsp;&nbsp; cout <span class="sh_symbol">&lt;&lt;</span> str_1 <span class="sh_symbol">&lt;&lt;</span> endl<span class="sh_symbol">;</span></li><li>&nbsp;&nbsp;&nbsp; cout <span class="sh_symbol">&lt;&lt;</span> str_2 <span class="sh_symbol">&lt;&lt;</span> endl<span class="sh_symbol">;</span></li><li>&nbsp;&nbsp;&nbsp; cout <span class="sh_symbol">&lt;&lt;</span> str_3 <span class="sh_symbol">&lt;&lt;</span> endl<span class="sh_symbol">;</span></li><li>&nbsp;&nbsp;&nbsp; cout <span class="sh_symbol">&lt;&lt;</span> str_4 <span class="sh_symbol">&lt;&lt;</span> endl<span class="sh_symbol">;</span></li><li>&nbsp;&nbsp;&nbsp; cout <span class="sh_symbol">&lt;&lt;</span> str_5 <span class="sh_symbol">&lt;&lt;</span> endl<span class="sh_symbol">;</span></li><li>&nbsp;&nbsp;&nbsp; <span class="sh_keyword">return</span> <span class="sh_number">0</span><span class="sh_symbol">;</span></li><li><span class="sh_cbracket">}</span></li></ol></pre><pre class="snippet-textonly sh_sourceCode" style="display: block;">#include &lt;iostream&gt;
#include &lt;string&gt;
u<a href="/ref/sin.html" target="_blank" class="sh_url">sin</a>g namespace std;
int main ()
{
&nbsp;&nbsp;&nbsp; string str ("12345678");
&nbsp;&nbsp;&nbsp; char ch[ ] = "abcdefgh";
&nbsp;&nbsp;&nbsp; string a; //定义一个空字符串
&nbsp;&nbsp;&nbsp; string str_1 (str); //构造函数,全部复制
&nbsp;&nbsp;&nbsp; string str_2 (str, 2, 5); //构造函数,从字符串str的第2个元素开始,复制5个元素,赋值给str_2
&nbsp;&nbsp;&nbsp; string str_3 (ch, 5); //将字符串ch的前5个元素赋值给str_3
&nbsp;&nbsp;&nbsp; string str_4 (5,'X'); //将 5 个 'X' 组成的字符串 "XXXXX" 赋值给 str_4
&nbsp;&nbsp;&nbsp; string str_5 (str.begin(), str.end()); //复制字符串 str 的所有元素,并赋值给 str_5
&nbsp;&nbsp;&nbsp; cout &lt;&lt; str &lt;&lt; endl;
&nbsp;&nbsp;&nbsp; cout &lt;&lt; a &lt;&lt; endl ;
&nbsp;&nbsp;&nbsp; cout &lt;&lt; str_1 &lt;&lt; endl;
&nbsp;&nbsp;&nbsp; cout &lt;&lt; str_2 &lt;&lt; endl;
&nbsp;&nbsp;&nbsp; cout &lt;&lt; str_3 &lt;&lt; endl;
&nbsp;&nbsp;&nbsp; cout &lt;&lt; str_4 &lt;&lt; endl;
&nbsp;&nbsp;&nbsp; cout &lt;&lt; str_5 &lt;&lt; endl;
&nbsp;&nbsp;&nbsp; return 0;
}
</pre></div></div>

***

***

三,添加元素
------

s.push_back('t');

尾部添加值为t的字符

s.insert(p,'t');

迭代器p前面插入值为't'的字符,返回指向新字符的迭代器

s.insert(p,n,'t');

迭代器p前插入n个值为't'的字符,返回void

s.insert(p,b,e);

迭代器p前插入由迭代器b和e标记范围的元素

s.insert(pos,n,'t');

在下标pos前插入n个值为't'的字符

s.insert(pos,s2);

在下标pos前插入string对象s2

s.insert(pos,s2,pos2,len);

在下标pos前插入s2从pos2下标开始的len个字符

s.insert(pos,cp,len);

在下表pos前插入cp所指数组的前len个字符

s.insert(pos,cp);

在下表pos前插入cp所指的以空字符结束的字符串

实践操作
----

<div class="jb51code">
<div><div id="highlighter_116250" class="syntaxhighlighter  cpp"><div class="toolbar"><span><a href="#" class="toolbar_item command_help help">?</a></span></div><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div><div class="line number2 index1 alt1">2</div><div class="line number3 index2 alt2">3</div><div class="line number4 index3 alt1">4</div><div class="line number5 index4 alt2">5</div><div class="line number6 index5 alt1">6</div><div class="line number7 index6 alt2">7</div><div class="line number8 index7 alt1">8</div><div class="line number9 index8 alt2">9</div><div class="line number10 index9 alt1">10</div><div class="line number11 index10 alt2">11</div><div class="line number12 index11 alt1">12</div><div class="line number13 index12 alt2">13</div><div class="line number14 index13 alt1">14</div><div class="line number15 index14 alt2">15</div><div class="line number16 index15 alt1">16</div><div class="line number17 index16 alt2">17</div><div class="line number18 index17 alt1">18</div><div class="line number19 index18 alt2">19</div><div class="line number20 index19 alt1">20</div><div class="line number21 index20 alt2">21</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="cpp preprocessor">#include&lt;iostream&gt;</code></div><div class="line number2 index1 alt1"><code class="cpp keyword bold">using</code> <code class="cpp keyword bold">namespace</code> <code class="cpp plain">std;</code></div><div class="line number3 index2 alt2"><code class="cpp color1 bold">int</code> <code class="cpp plain">main()</code></div><div class="line number4 index3 alt1"><code class="cpp plain">{</code></div><div class="line number5 index4 alt2"><code class="cpp spaces">&nbsp;</code><code class="cpp plain">string str=</code><code class="cpp string">"hello"</code><code class="cpp plain">;</code></div><div class="line number6 index5 alt1"><code class="cpp spaces">&nbsp;</code><code class="cpp plain">string s=</code><code class="cpp string">"Hahah"</code><code class="cpp plain">;</code></div><div class="line number7 index6 alt2"><code class="cpp spaces">&nbsp;</code><code class="cpp plain">str.insert(1,s);</code><code class="cpp comments">//在原串下标为1的字符e前插入字符串s</code></div><div class="line number8 index7 alt1"><code class="cpp spaces">&nbsp;</code><code class="cpp plain">cout&lt;&lt;str&lt;&lt;endl;</code></div><div class="line number9 index8 alt2">&nbsp;</div><div class="line number10 index9 alt1"><code class="cpp spaces">&nbsp;</code><code class="cpp plain">string str1=</code><code class="cpp string">"hello"</code><code class="cpp plain">;</code></div><div class="line number11 index10 alt2"><code class="cpp spaces">&nbsp;</code><code class="cpp color1 bold">char</code> <code class="cpp plain">c=</code><code class="cpp string">'w'</code><code class="cpp plain">;</code></div><div class="line number12 index11 alt1"><code class="cpp spaces">&nbsp;</code><code class="cpp plain">str1.insert(4,5,c);</code><code class="cpp comments">//在原串下标为4的字符o前插入5个字符c</code></div><div class="line number13 index12 alt2"><code class="cpp spaces">&nbsp;</code><code class="cpp plain">cout&lt;&lt;str1&lt;&lt;endl;</code></div><div class="line number14 index13 alt1">&nbsp;</div><div class="line number15 index14 alt2"><code class="cpp spaces">&nbsp;</code><code class="cpp plain">string str2=</code><code class="cpp string">"hello"</code><code class="cpp plain">;</code></div><div class="line number16 index15 alt1"><code class="cpp spaces">&nbsp;</code><code class="cpp plain">string s2=</code><code class="cpp string">"weakhaha"</code><code class="cpp plain">;</code></div><div class="line number17 index16 alt2"><code class="cpp spaces">&nbsp;</code><code class="cpp plain">str2.insert(0,s2,1,3);</code><code class="cpp comments">//将字符串s2从下标为1的e开始数3个字符,分别是eak,插入原串的下标为0的字符h前</code></div><div class="line number18 index17 alt1"><code class="cpp spaces">&nbsp;</code><code class="cpp plain">cout&lt;&lt;str2&lt;&lt;endl;</code></div><div class="line number19 index18 alt2">&nbsp;</div><div class="line number20 index19 alt1"><code class="cpp spaces">&nbsp;</code><code class="cpp keyword bold">return</code> <code class="cpp plain">0;</code></div><div class="line number21 index20 alt2"><code class="cpp plain">}</code></div></div></td></tr></tbody></table></div></div>
<div class="codetool" id="codetool"><a href="javascript:;" class="selall" title="全选"></a><a href="javascript:;" class="copy" title="复制c++代码"></a><div class="code_n"><textarea></textarea></div></div></div>

***

---

***

四,删除元素
---

***
erase()删除

erase 方法原型:

1. basic_string & erase(size_type pos=0, size_type n=npos);

   即erase(pos,n);从给定起始位置pos处开始删除, 删除n个字符, 返回值修改后的string对象引用。比如erase(0,1)就是删除第一个字符。

2. iterator erase(const_iterator position)
即erase(positon),删除迭代器位置处的单个字符(position是个string类型的迭代器), 并返回下个元素的迭代器。

如果position 不是迭代器位置,则删除该位置及之后的所有字符。

3. iterator erase(const_iterator first, const_iterator last)
 即erase(first,last);删除迭代器(first, last)区间的所有字符(first和last都是迭代器),返回一个指向被删除的最后一个元素的下一个字符的迭代器.
***


s.erase(p);

删除迭代器p所指向的元素。返回指向被删元素后一个元素的迭代器

s.erase(b,e);

删除由迭代器b和e标记范围内的元素,返回指向被删元素段后一个元素的迭代器

s.pop_back();

删除最后一个元素。返回void。VS2010支持。

s.clear();

删除所有元素,返回void

实践操作
---

<pre data-index="0" class="" name="code"><code class="language-cpp hljs"><ol class="hljs-ln" style="width:100%"><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="1"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-meta">#<span class="hljs-keyword">include</span><span class="hljs-string">&lt;iostream&gt;</span></span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="2"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-meta">#<span class="hljs-keyword">include</span><span class="hljs-string">&lt;string&gt;</span></span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="3"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> std;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="4"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="5"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-function"><span class="hljs-type">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span> </span>{</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="6"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    string str = <span class="hljs-string">"hello the world!"</span>;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="7"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    string str1 = <span class="hljs-string">"hello the world!"</span>;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="8"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    string str2 = <span class="hljs-string">"hello the world!"</span>;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="9"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    string str3 = <span class="hljs-string">"hello the world!"</span>;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="10"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    string str4 = <span class="hljs-string">"hello the world!"</span>;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="11"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="12"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    <span class="hljs-comment">/****************第1种用法:earse(pos,n)**************************/</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="13"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    str.<span class="hljs-built_in">erase</span>(<span class="hljs-number">6</span>, <span class="hljs-number">2</span>);   </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="14"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    cout &lt;&lt; <span class="hljs-string">"&lt;"</span> &lt;&lt; str &lt;&lt; <span class="hljs-string">"&gt;"</span> &lt;&lt; endl;  <span class="hljs-comment">// &lt;hello e world!&gt;    </span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="15"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    <span class="hljs-comment">/****************第2种用法:earse(position)***********************/</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="16"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    str1.<span class="hljs-built_in">erase</span>(<span class="hljs-number">8</span>);  <span class="hljs-comment">//如果pos不是迭代器位置,则删除该位置及之后的所有字符</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="17"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    cout &lt;&lt; <span class="hljs-string">"&lt;"</span> &lt;&lt; str1 &lt;&lt; <span class="hljs-string">"&gt;"</span> &lt;&lt; endl;    <span class="hljs-comment">//  &lt;hello th&gt;</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="18"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="19"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    str2.<span class="hljs-built_in">erase</span>(str2.<span class="hljs-built_in">begin</span>()); <span class="hljs-comment">//如果pos是迭代器,则</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="20"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    cout &lt;&lt; <span class="hljs-string">"&lt;"</span> &lt;&lt; str2 &lt;&lt; <span class="hljs-string">"&gt;"</span> &lt;&lt; endl;    <span class="hljs-comment">//  &lt;ello the world!&gt;</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="21"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    <span class="hljs-comment">/****************第3种用法:earse(fist,last)**********************/</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="22"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    str3.<span class="hljs-built_in">erase</span>(str3.<span class="hljs-built_in">begin</span>() + <span class="hljs-number">3</span>, str3.<span class="hljs-built_in">end</span>()<span class="hljs-number">-3</span>);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="23"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    cout &lt;&lt; <span class="hljs-string">"&lt;"</span> &lt;&lt; str3 &lt;&lt; <span class="hljs-string">"&gt;"</span> &lt;&lt; endl;     <span class="hljs-comment">// &lt;helld!&gt;</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="24"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    str4.<span class="hljs-built_in">erase</span>(str4.<span class="hljs-built_in">begin</span>() + <span class="hljs-number">3</span>, str4.<span class="hljs-built_in">end</span>());</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="25"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    cout &lt;&lt; <span class="hljs-string">"&lt;"</span> &lt;&lt; str4 &lt;&lt; <span class="hljs-string">"&gt;"</span> &lt;&lt; endl;    <span class="hljs-comment">//  &lt;hel&gt;</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="26"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    <span class="hljs-built_in">system</span>(<span class="hljs-string">"pause"</span>);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="27"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="28"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">}</div></div></li></ol></code><div class="hljs-button signin" data-title="复制" data-report-click="{&quot;spm&quot;:&quot;1001.2101.3001.4334&quot;}" οnclick="hljs.signin(event)"></div></pre>

***
***
五,长度大小
---
s.size();

返回s中元素个数,类型为size_type

s.max_size();

返回s中可容纳最多元素个数,类型为size_type

s.empty();

返回s中元素是否为0的布尔值

s.resize(n);

调整s的长度大小,使其能容纳n个元素

如果n<s.size(),则删除多余元素,否则,添加采用值初始化的新元素

s.resize(n,'t');

调整s的长度大小,使其能容纳n个值为't'的元素

s.capacity();

返回在s需要分配更多存储空间前能存储的元素个数,返回类型为size_type

s.reserve(n);

设置s预留n个元素的存储空间,返回void

时间不多了,只做部分实践操作
--
<ol class="hljs-ln" style="width:100%"><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="1"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-meta">#<span class="hljs-keyword">define</span> _CRT_SECURE_NO_WARNINGS</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="2"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-meta">#<span class="hljs-keyword">include</span> <span class="hljs-string">"iostream"</span></span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="3"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-meta">#<span class="hljs-keyword">include</span> <span class="hljs-string">"string"</span></span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="4"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> std;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="5"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="6"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-function"><span class="hljs-type">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span></span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="7"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">{</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="8"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    string str = <span class="hljs-string">"hello world"</span>;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="9"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    <span class="hljs-type">int</span> len = str.<span class="hljs-built_in">length</span>();</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="10"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="11"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    cout&lt;&lt;len&lt;&lt;endl;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="12"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    <span class="hljs-built_in">system</span>(<span class="hljs-string">"pause"</span>);    </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="13"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="14"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">}    </div></div></li></ol>

***
***
六,赋值操作
---

s1=s2;

删除s1的所有元素,将s2元素复制给s1

s1.swap(s2);

将s1和s2的内容交换

s.assign(b,e);

重设s的元素:将迭代器b和e标记范围的元素复制给s

s.assign(n,'t');

重设s为存储了n个值为't'的对象

s.assign(s2);

不解析

s.assign(s2,pos2,len);

不解析

s.assign(cp,len);

不解析

s.assign(cp);

不解析

***

***

七,子串操作
---
 

s.substr(pos,n);

返回string类型字符串,包含从下表pos开始的n个字符

s.substr(pos);

不解析

s.substr();

返回s的副本

s.c_str();

返回s的c风格字符串

***
***
八,string对象修改
---

操作函数:(args在参数表定义)

s.append(args);

将args串接在s后面。返回s的引用

s.replace(pos,len,args);

删除s中从下标开始的len个字符,用args替代之。返回s的引用。

此版本中,args不能为b2,e2

s.replace(b,e,args);

删除迭代器b和e标记范围内所有的字符,用args替代之。返回s的引用。

此版本中,args不能为s2,pos2,len2

args参数定义:

s2

string 类型的字符串s2

s2,pos2,len2

string类型的字符串s2中从下标pos2开始的len2个字符

cp

指针cp指向的以空字符结束的数组

cp,len2

cp指向的数组中的前len2个字符

n,'t'

字符't'的n个副本

b2,e2

迭代器b2和e2标记范围内的所有字符

***
***
九,string查找操作
---

操作函数:(args在参数表格定义,返回类型都是size_type或是string::nops)

注意:find和rfind是串精确查找,而find_first和find_last是单个字符查找。

s.find(args);

在s中查找args的第一次出现

s.rfind(args);

在s中查找args的最后一次出现

s.find_first_of(args);

在s中查找args的任意字符的第一次出现

s.find_last_of(args);

在s中查找args的任意字符的最后一次出现

s.find_first_not_of(args);

在s中查找第一个不属于args的字符

s.find_last_not_of(args);

在s中查找最后一个不属于args的字符

agrs参数:

't',pos

从下标pos开始,查找字符't',pos的默认值为0

s2,pos

从下标pos开始,查找string对象s2,pos默认值为0

cp,pos

查找cp所指C风格字符串,pos默认值为0

cp,pos,n

从下标pos开始,查找cp所指数组前n个字符

 
***
***
十,string对象比较(大于返回正数,小于返回负数,等于返回0)
---
s.compare(s2);

比较s和s2

s.compare(pos1,n1,s2);

让s中从pos下标开始的n1个字符跟s2做比较

s.compare(pos1,n1,s2,pos2,n2);

让s中从pos1下标开始的n1个字符与s2中从pos2开始的n2个字符比较

s.compare(cp);

cp,C风格字符串

s.compare(pos1,n1,cp);

不解析

s.compare(pos1,n1,cp,n2);

不解析
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值