STL学习笔记string

Posted Keep--Silent

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STL学习笔记string相关的知识,希望对你有一定的参考价值。

STL学习笔记(一)string

c_str()

const char *c_str();

c_str()函数返回一个指向正规C字符串的指针, 内容与本字符串相同

string s="123"
printf("%s",s.c_str())

增:insert()

  iterator insert( iterator i, const char &ch );
  basic_string &insert( size_type index, const basic_string &str );
  basic_string &insert( size_type index, const char *str );
  basic_string &insert( size_type index1, const basic_string &str, size_type index2, size_type num );
  basic_string &insert( size_type index, const char *str, size_type num );
  basic_string &insert( size_type index, size_type num, char ch );
  void insert( iterator i, size_type num, const char &ch );
  void insert( iterator i, iterator start, iterator end );

在迭代器i表示的位置前面插入一个字符ch, 在字符串的位置index插入字符串str,
在字符串的位置index插入字符串str的子串(从index2开始,长num个字符),
在字符串的位置index插入字符串str的num个字符, 在字符串的位置index插入num个字符ch的拷贝,
在迭代器i表示的位置前面插入num个字符ch的拷贝, 在迭代器i表示的位置前面插入一段字符,从start开始,以end结束.

删:erase()

  iterator erase( iterator pos );
  iterator erase( iterator start, iterator end );
  basic_string &erase( size_type index = 0, size_type num = npos );

erase()函数可以:

删除pos指向的字符, 返回指向下一个字符的迭代器, 删除从start到end的所有字符,
返回一个迭代器,指向被删除的最后一个字符的下一个位置 删除从index索引开始的num个字符, 返回*this. 参数index 和
num 有默认值, 这意味着erase()可以这样调用:只带有index以删除index后的所有字符,或者不带有任何参数以删除所有字符.
例如:

string s("So, you like donuts, eh? Well, have all the donuts in the world!");
cout << "The original string is '" << s << "'" << endl;
  
s.erase( 50, 14 );
cout << "Now the string is '" << s << "'" << endl;

s.erase( 24 );
cout << "Now the string is '" << s << "'" << endl;

s.erase();
cout << "Now the string is '" << s << "'" << endl;

将显示

The original string is ‘So, you like donuts, eh? Well, have all the donuts in the world!’
Now the string is ‘So, you like donuts, eh? Well, have all the donuts’
Now the string is ‘So, you like donuts, eh?’
Now the string is ‘’

改:replace()

  basic_string &replace( size_type index, size_type num, const basic_string &str );
  basic_string &replace( size_type index1, size_type num1, const basic_string &str, size_type index2,
  size_type num2 );
  basic_string &replace( size_type index, size_type num, const char *str );
  basic_string &replace( size_type index, size_type num1, const char *str, size_type num2 );
  basic_string &replace( size_type index, size_type num1, size_type num2, char ch );
  basic_string &replace( iterator start, iterator end, const basic_string &str );
  basic_string &replace( iterator start, iterator end, const char *str );
  basic_string &replace( iterator start, iterator end, const char *str, size_type num );
  basic_string &replace( iterator start, iterator end, size_type num, char ch );

用str中的num个字符替换本字符串中的字符,从index开始
用str中的num2个字符(从index2开始)替换本字符串中的字符,从index1开始,最多num1个字符
用str中的num个字符(从index开始)替换本字符串中的字符
用str中的num2个字符(从index2开始)替换本字符串中的字符,从index1开始,num1个字符
用num2个ch字符替换本字符串中的字符,从index开始 用str中的字符替换本字符串中的字符,迭代器start和end指示范围
用str中的num个字符替换本字符串中的内容,迭代器start和end指示范围,
用num个ch字符替换本字符串中的内容,迭代器start和end指示范围.

查:find()

返回str在字符串中第一次出现的位置(从index开始查找)。如果没找到则返回string::npos,
返回str在字符串中第一次出现的位置(从index开始查找,长度为length)。如果没找到就返回string::npos,
返回字符ch在字符串中第一次出现的位置(从index开始查找)。如果没找到就返回string::npos

例如,

	string str1( "Alpha Beta Gamma Delta" );
	if( str1.find("amm", 0 ) != string::npos )
		cout << "Found Omega at " << str1.find( "amm", 0 ) << endl;
	else
		cout << "Didn't find amm" << endl;

Found Omega at 12

测了一下, string::npos是八字节全1。

以上是关于STL学习笔记string的主要内容,如果未能解决你的问题,请参考以下文章

STL标准库 & 范型编程学习笔记:C++学习网站STL六大部件介绍

STL标准库 & 范型编程学习笔记:C++学习网站STL六大部件介绍

C++中STL学习笔记——常见算法操作演示

C++中STL学习笔记——常见算法操作演示

stl源码剖析学习笔记traits编程技法简明例程

C++STL标准库学习笔记函数对象