2019.8.12C++ 基础学习笔记——String类

C++ 基础学习笔记——String类

String类定义语句

string str; //定义string类字符串str
string str1(str); //定义str字符串的复制字符串str1
string str2(str,datanum,num); //定义str2字符串,初始值为str字符串第datanum个元素开始的num个元素
string str3(str.begin(),str.end()); //定义str3字符串,初始值为从str的begin位置到end位置的元素
char c , s[];
string str4(c); / string str4(s,num); //定义str4字符串,初始值为字符变量c或数组s的前num个元素
string str5(num,c); //定义str5字符串,初始值为num个字符c元素

String字符串内元素引用

string str = {"12345678"};
char& x = str[3];
char* y = &str[4]; //定义x,y为str中第3,4个元素的引用
x = 'X';
*y = 'Y'; //通过引用修改str元素数值
结果:
str = "12XY5678"

String字符串比较

字符串比较函数是A.compare(B),A与B相同返回值为0,A在字典顺序中较先返回负数,较后返回正数。

string strA = "ABC" , strB = "DEF" , strC = "BC" , strD = "ABC"; 
strA.compare(B); //字符串A与B相比较,返回-1
strB.compare(A); //返回1
strA.compare(D); //返回0
strA.compare(1,2,strC,0,2); //字符串A中第2个元素起2个元素与C中第1个元素起2个元素比较,返回0

String字符串赋值和修改

赋值函数assign(),可赋值整条字符串或子串,可用迭代器。

string::iterator itB;
string::iterator itE; //定义迭代器,位置为首和尾
itB = str1.begin ();
itE = str1.end();
str.assign (itB, (--itE)); //从第 1 个至倒数第 2 个元素,赋值给字符串 str

operator = 也是赋值函数,多用于重载运算符。

erase()函数用于删减字符串中元素,可用迭代器。

swap()函数用于交换字符串。

insert()函数用于在字符串指定位置插入元素,可用迭代器。
P.S. 实验insert()函数时程序出现内存错误,检查后发现问题出在对同一字符串A进行多次直接赋值(A = “asdfg”;),即使多条语句中赋给A的值相同,仍会出现内存错误,删去其他赋值语句只留一条A = “asdfg”;后错误消失,具体解决方法暂无。

append()函数用于在字符串中追加元素,可用迭代器。

String类输入输出

String类输入可使用cin >> 或是getline()函数。

string A;
cin >> A;
getline(cin,A); //两条语句都是从键盘输入给A赋值

P.S.在实验中发现如果有多条输入赋值语句,则除第一条外,后面所有的getline()语句都要改成getline(cin,A,’ '),意为getline在输入空格而不是回车后从键盘获取输入信息,如果不这么设置,那么除了第一条输入语句能够写入,后面的语句都会被回车跳过。

String类输出可直接用cout << 输出。

string A;
cout << A << endl; 

String类内元素查找

find()函数用于实现string字符串内元素的查找,当未找到指定元素时,返回值为npos,npos初始值为-1,但npos是无符号整型数,类型为string::size_type,若找到元素或字串,则返回其在字符串中的位置。

rfind()函数用于实现逆向查找,功能与find()一样。

find_first_of()查找与指定元素相同的第一个元素,find_last_of()查找最后一个。
find_first_not_of()和find_last_not_of()函数查找与指定元素不匹配的第一个和最后一个元素。
这四个函数的返回值和fing()一样。

String类迭代器

String类中的迭代器可看作一个标转指针,可在算法,子程序,函数语句中调用,用法和指针类似,无需*标记。

发布了25 篇原创文章 · 获赞 6 · 访问量 1440

猜你喜欢

转载自blog.csdn.net/weixin_43948991/article/details/99298813