C++之String基础入门学习
[TOC]
文章参考:http://c.biancheng.net/view/400.html
概述
string 类是 STL中 basic_string 模板实例化得到的模板类。其定义如下:
1 | typedef basic_string <char> string; |
basic_string 此处可以不必深究。
string 类的成员函数有很多,同一个名字的函数也常会有五六个重载的版本。篇幅所限,不能将这些原型一一列出并加以解释。这里仅对常用成员函数按功能进行分类,并直接给出应用的例子,通过例子,读者可以基本掌握这些成员函数的用法。
之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必担心内存是否足够、字符串长度等等,而且作为一个泛型类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,== 进行比较,+ 做串联(是不是很简单?)。我们尽可以把它看成是C++的基本数据类型。
要想更深入地了解 string 类,还要阅读C++的参考手册或编译器自带的联机资料。对于前面介绍过的字符串处理的内容,这里不再重复说明。
构造函数
string 类有多个构造函数,用法示例如下:
1 | string s1(); // si = "" |
为称呼方便,本教程后文将从字符串下标 n 开始、长度为 m 的字符串称为“子串(n, m)”。
string 类没有接收一个整型参数或一个字符型参数的构造函数。下面的两种写法是错误的:
1 | string s1('K'); |
string 对象赋值
可以用 char* 类型的变量、常量,以及 char 类型的变量、常量对 string 对象进行赋值。例如:
1 | string s1; |
string 类还有 assign 成员函数,可以用来对 string 对象赋值。assign 成员函数返回对象自身的引用。例如:
1 | string s1("12345"), s2; |
字符串的长度
length 成员函数返回字符串的长度。size 成员函数可以实现同样的功能。
string对象中字符串的连接
除了可以使用+
和+=
运算符对 string 对象执行字符串的连接操作外,string 类还有 append 成员函数,可以用来向字符串后面添加内容。append 成员函数返回对象自身的引用。例如:
1 | string s1("123"), s2("abc"); |
查找子串和字符
string 类有一些查找子串和字符的成员函数,它们的返回值都是子串或字符在 string 对象字符串中的位置(即下标)。如果查不到,则返回 string::npos。string: :npos 是在 string 类中定义的一个静态常量。这些函数如下:
- find:从前往后查找子串或字符出现的位置。
- rfind:从后往前查找子串或字符出现的位置。(reverse_find)
- find_first_of:从前往后查找何处出现另一个字符串中包含的字符。例如:
- s1.find_first_of(“abc”); //查找s1中第一次出现”abc”中任一字符的位置
- find_last_of:从后往前查找何处出现另一个字符串中包含的字符。
- find_first_not_of:从前往后查找何处出现另一个字符串中没有包含的字符。
- find_last_not_of:从后往前查找何处出现另一个字符串中没有包含的字符。
下面是 string 类的查找成员函数的示例程序。
1 |
|