C++语言也封装了字符串类string,功能非常强大。string类型的字符串可以直接输入、输出,可以用<、<=、>、>=、==比较大小,可以用“+”号拼接两个字符串,也可以通过下标引用字符串中的字符,等等。string类也提供了丰富的函数以下列出一些常用的函数
int size() const; //返回当前字符串的大小,即长度
int length() const; //返回当前字符串的长度
bool empty() const; //当前字符串是否为空
void swap(string&s2); //交换当前字符串与s2的值
string substr(int pos = 0, int n = npos)const; //返pos开始的n个字符组成的字符串
int find(char c, int pos = 0)const; //从pos开始查找字符c在当前字符串的位置
int find(const char *s, int pos = 0)const; //从pos开始查找字符串s在当前串中的位置
int find(const char *s, int pos, int n)const; //从pos开始查找字符串s中前n个字符
组成的字符串在当前串中的位置,成功返回所在位置,失败时返回string::npos的值(npos是一个常量,用来表示不存在的位置)
int find(const string&s,int pos=0)const; //从pos开始查找字符串s在当前串中的位置
清空字符串的方法:s=" "、s.clear()、s.erase()
字符串逆序的方法:reverse(s.begin(), s.end())
注意:
①用cin读入string类型的字符串时,也是以空格、Tab键、回车键这3类空白字符作为输入结束的。如果要将包含空格的字符串读入到string类型的字符串s,需要使用getline(cin,s),这种输入方式是以回车换行表示输入结束
②用getline函数读入string类型的字符串s时,如果前面有输入数据,则会读入上一行的换行符,这时需要专门用getchar()或cin等方法跳过上一行的换行符,如果是用cin.getline(s,101)这种方式读入一个字符串到字符数组s,也是存在这样的问题,处理方法是一样
int n; string s1,s2;
cin >> n; //先读入一个整数,如25
//跳过上一行的换行符,可以用一下任意一种方法
getchar() //(1)只读入换行符,但不储存
//char c; c = getchar(); //(2)读入换行符并保存到一个临时变量中
//char c; cin >> c; //(3)读入换行符并保存到一个临时变量中
getline(cin, s1); //假设输入“a b c”
getline(cin, s2); //假设输入“aaa bbb ccc”
cout << s1 << endl; //输出:a b c
cout << s2 << endl; //输出:aaa bbb ccc