STL---string 基本的成员函数
- 1、STL---string 基本的成员函数介绍
- 2、练习题
// STL(标准模板库)
// ascall码表(美):值(内存中的二进制数值)——文字字符 {存在一一映射关系}
1、STL—string 基本的成员函数介绍
string类的构造函数
#include <iostream>
#include <string>
#include <list>
using namespace std;void test_string1()
{//string类的构造函数string s1;//string s2("hello");string s2 = "hello"; // 构造+拷贝构造 ->优化成 直接构造cout<< s1 <<endl;cout<< s2 <<endl;string s3(s2);cout<< s3 <<endl;/*cin >> s1 >> s2;cout<< s1 <<endl;cout<< s2 <<endl;*/
}
string类的赋值运算符重载
void test_string2()
{string s1;string s2 = "hello world!!!";//赋值s1 = s2; //拷贝赋值//后面两种不常用s1 = "xxxxx";s1 = 'y';}
operator[] 遍历string
void test_string3()
{string s1("hello,world");cout<< s1[0] <<endl; //s1[0] --> s1.operator[](0) --> char& operator[](size_t pos) 取到string的第pos个字符s1[0] = 'x';cout<< s1[0] <<endl;cout<< s1 <<endl;//要求遍历string,每个字符+1for (size_t i=0; i<s1.size(); ++i) //这里的 s1.size() 返回的是字符串s1的长度{s1[i]++;}cout<< s1 <<endl;s1[15];
}int main()
{test_string3();return 0;
}
2、练习题
//T1、仅仅反转字母
// 给你一个字符串s,根据下述规则反转字符串:(1)所有非英文字母保留在原有位置 (2)所有英文字母(大写或小写)位置反转
// 返回反转后的 s 。class Solution
{
public:bool IsLetter(char ch){if ((ch >= 'a' && ch <= 'z')|| (ch >= 'A' && ch <= 'Z'))return true;elsereturn false;}string reverseOnlyLetters(string s){size_t begin = 0, end = s.size() - 1;while (begin < end){while (begin < end && !IsLetter(s[begin])) //begin<end ,防止字符串s都不是字母,一直 ++begin,造成越界。++begin;while (begin < end && !IsLetter(s[begin]))--end;//当begin 和 end 都是字母时,交换swap(s[begin], s[end]);++begin;--end;}return s;}};