std::string删除首字符

查了下std::string的使用手册,才知道string删除字符只有erase成员方法,但是这个方法提供了3个重载函数,如下:

 string& erase ( size_t pos = 0, size_t n = npos );
iterator erase ( iterator position );
iterator erase ( iterator first, iterator last );  

Erase characters from string

Erases a part of the string content, shortening the length of the string.

The characters affected depend on the member function version used:


string& erase ( size_t pos = 0, size_t n = npos ); 
Erases a sequence of n characters starting at position pos. Notice that both parameters are optional: with only one argument, the function deletes everything from position pos forwards, and with no arguments, the function deletes the entire string, like member clear. 
iterator erase ( iterator position ); 
Erases the character referred by the iterator position. Only one character is affected. 
iterator erase ( iterator first, iterator last ); 
Erases all the characters between first and last. 

Parameters
pos 
Position within the string of the first character to be erased.
If the position passed is past the end of the string, an out_of_range exception is thrown. 

n 
Amount of characters to be removed. It may remove less characters if the end of the string is reached before the n characters have been erased. The default value of npos indicates that all the characters until the end of the string should be erased.
size_t is an unsigned integral type. 
position 
Iterator of the member type string::iterator referring to a signle character in the string to be removed. 
first 
Iterator of the member type string::iterator referring to the first character in a sequence of characters within the string to be erased. 
last 
Iterator of the member type string::iterator referring to the last character in the sequence of characters within the string to be erased. 

Return Value
For the member that returns a string&, the function returns *this.
For the remaining members, the function returns an iterator of member type string::iterator referring to the character that now occupies the position of the first character erased, or, if no such character exists, returns end().

Example
// string::erase
#include <iostream>
#include <string>
using namespace std;

int main ()
{
  string str ("This is an example phrase.");
  string::iterator it;

  // erase used in the same order as described above:
  str.erase (10,8);
  cout << str << endl;        // "This is an phrase."

  it=str.begin()+9;
  str.erase (it);
  cout << str << endl;        // "This is a phrase."

  str.erase (str.begin()+5, str.end()-7);
  cout << str << endl;        // "This phrase."
  return 0;
}
 


Basic template member declaration
( basic_string<charT,traits,Allocator> )
typedef typename Allocator::size_type size_type;
basic_string& erase( size_type pos = 0, size_type n = npos);
     iterator erase ( iterator p );
     iterator erase ( iterator first, iterator last );
 


See also
string::clear Clear string (public member function) 
string::replace Replace part of string (public member function) 
string::insert Insert into string (public member function) 
string::assign Assign content to string (public member function) 

---------------------------------------------------------------------------------------------------

因此,删除首字符可用的方法有:

1.  str.erase(0, 1);

2. str.erase(str.begin());

3. str.erase(str.begin(), str.begin()+1) ;              // 此法估计不会有人用了

4. 还能想到的应该是取子串方法了!



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值