C++ Primer(第五版)学习笔记_4_标准模板库string(1)
1、创建string对象
创建一个空字符串,其长度为0
#include <iostream> #include <string> using namespace std; int main(int argc, char* argv[]) { string s; cout << s.length() << endl; return 0; }
运行结果:
0
2、给string对象赋值
赋值一般有两种方式。
(1)直接给字符串对象赋值
#include <iostream> #include <string> using namespace std; int main(int argc, char* argv[]) { string s; s = "hello, C++ STL."; cout << s << endl; return 0; }
运行结果:
hello, C++ STL.
(2)更常用的方法是,把字符指针赋值给一个字符串对象
#include <iostream> #include <stdio.h> #include <string> using namespace std; int main(int argc, char* argv[]) { string s1; char ss[5000]; //scanf的输入速度比cin快的多 //scanf是C语言的函数,不支持string对象 scanf("%s", &ss); s1 = ss; cout << s1 << endl; string s2; cin >> s2; cout << s2 << endl; return 0; }
运行结果:
scanf,string
scanf,string
cin,string
cin,string
3、从string对象尾部添加字符
在string对象的尾部添加一个字符(char),采用“+”操作符即可。
#include <iostream> #include <stdio.h> #include <string> using namespace std; int main(int argc, char* argv[]) { string s; s = s + 'a'; s = s + 'b'; s = s + 'c'; cout << s << endl; return 0; }
运行结果:
abc
4、从string对象尾部追加字符串
从尾部追加的方式有两种。
(1)直接采用“+”操作符
#include <iostream> #include <stdio.h> #include <string> using namespace std; int main(int argc, char* argv[]) { string s; s = s + "abc"; s = s + "123"; cout << s << endl; return 0; }
运行结果:
abc123
(2)采用append()方法
#include <iostream> #include <stdio.h> #include <string> using namespace std; int main(int argc, char* argv[]) { string s; s.append("abc"); s.append("123"); cout << s << endl; return 0; }
运行结果:
abc123
5、给string对象插入字符
可以使用insert()方法把一个字符插入到迭代器位置之前
#include <iostream> #include <stdio.h> #include <string> using namespace std; int main(int argc, char* argv[]) { string s; s = "123456"; s.insert(s.begin() + 1, 'p'); cout << s << endl; return 0; }
运行结果:
1p23456
6、访问string对象的元素
#include <iostream> #include <stdio.h> #include <string> using namespace std; int main(int argc, char* argv[]) { string s; s = "abc123456"; cout << s[0] << endl; cout << s[0] - 'a' << endl; return 0; }
运行结果:
a
0
7、删除string对象的元素
(1)清空一个字符串,则直接给它赋空字符串即可。也可以用s.clear()方法实现。
(2)使用erase()方法删除迭代器所指的那个元素或一个区间中的所有元素。
#include <iostream> #include <stdio.h> #include <string> using namespace std; int main(int argc, char* argv[]) { string s; s = "abc123456"; //删除第3个元素,元素位置从0开始计数 s.erase(s.begin() + 3); cout << s << endl; //删除0~4左闭右开区间的所有元素,[0, 4) s.erase(s.begin(), s.begin() + 4); cout << s << endl; s = ""; cout << s.length() << endl; return 0; }
运行结果:
abc23456
3456
0
8、返回string对象的长度
采用length()方法或则size()方法都可以返回字符串的长度;采用empty()方法,可返回字符串是否为空,如果字符串为空,返回1;否则,返回0。
#include <iostream> #include <stdio.h> #include <string> using namespace std; int main(int argc, char* argv[]) { string s; s = "abc123456"; cout << s.length() << endl; cout << s.size() << endl; s.clear(); cout << s.empty() << endl; return 0; }
运行结果:
9
9
1
9、替换string对象的字符
使用replace()方法可以很方便地替换string对象中的字符
#include <iostream> #include <stdio.h> #include <string> using namespace std; int main(int argc, char* argv[]) { string s; s = "abc123456"; //从第3个开始,将连续的3个字符替换为"good" //即将"1234"替换为good s.replace(3, 4, "good"); cout << s << endl; return 0; }
运行结果:
abcgood56
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-10-12 21:05:02