友情链接:C/C++系列系统学习目录
知识总结顺序参考C Primer Plus(第六版)和谭浩强老师的C程序设计(第五版)等,内容以书中为标准,同时参考其它各类书籍以及优质文章,以至减少知识点上的错误,同时方便本人的基础复习,也希望能帮助到大家
最好的好人,都是犯过错误的过来人;一个人往往因为有一点小小的缺点,将来会变得更好。如有错漏之处,敬请指正,有更好的方法,也希望不吝提出。最好的生活方式就是和努力的大家,一起奔跑在路上
文章目录
- ⛳(二)C++字符串:标准库string类
- 🎈1.基本用法
- (1)string变量的定义、初始化
- (2)string变量的输入、输出
- (3)string对象上的操作
- 🎈2.string类对象与字符数组的区别
⛳(二)C++字符串:标准库string类
C++处理字符串的方式有两种,一种就是在C中讲的采用字符数组的方式,还有一种基于string类库的方法
🎈1.基本用法
C++可以使用string类型的变量(使用C++的话说是对象)而不是字符数组来存储字符串,首先必须包含头文件string,同时string类位于名称空间std中:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string a;
return 0;
}
- string类定义隐藏了字符串的数组性质,能够像处理普通变量那样处理字符串
- 可以使用C风格字符串来初始化string对象。
- 可以使用 cin来将键盘输入存储到string对象中。
- 可以使用cout来显示 string对象。
- 可以使用数组表示法来访问存储在 string 对象中的字符。
(1)string变量的定义、初始化
string girlFriend1; //定义了一个字符串变量,此时,该字符串是空字符串
girlFriend1 = "王菲"; //把字符串常量"王菲"拷贝到 girlFriend
cout << "girlFriend1 = " << girlFriend1 << endl;
string girlFriend2;
girlFriend2 = girlFriend1; //把字符串变量 girlFriend1 的值拷贝到 girlFriend2
cout << "girlFriend2 = " << girlFriend2 << endl
//定义 girlFriend3 的同时,使用字符串常量"周迅"来初始化
string girlFriend3("周迅");
cout << "girlFriend3 = " << girlFriend3 << end
//定义 girlFriend4 的同时,使用字符串变量来初始化
string girlFriend4(girlFriend3);
cout << "girlFriend4 = " << girlFriend4 << endl;
//第一个参数表示字符个数
string girlFriend5(10, 'A');
cout << "girlFriend5 = " << girlFriend5 << endl;
(2)string变量的输入、输出
//基本输入输出
string job;
cout << "你是做什么工作的?" << endl;
cin >> job;
cout << "做" << job << ",收入一定不错吧?" << endl;
//自动跳过空白字符
string university; //大学
string profession; //专业
cout << "你是哪个学习毕业的?学什么专业? ";
// 输入: 清华 考古 hello
// 自动跳过空白字符
cin >> university >> profession;
cout << university << "的" << profession << "
//连续输入多个字符串,个数不确定
string food;
int i = 0;
cout << "你喜欢什么美食? ";
while (cin >> food) { //当用户输入 Ctrl + z 并回车 cin >> food 返回 0, 0 就是假
i = i + 1;
cout << "你喜欢的第" << i << "美食是:" << food << endl ;
cout << "你还喜欢吃什么美食? ";
}
(3)string对象上的操作
字符串合并:
string类简化了字符串合并操作。可以使用运算符+将两个string对象合并起来,还可以使用运算+=将字符串附加到string对象的末尾。
string str3 ;
str3 = strl +str2; //assign str3 the joinedstrings
str += str2 ; //add str2 to the end of str1
字符串复制:
同样可以使用函数strcpy()将字符串复制到字符数组中,使用函数 strcat() 将字符串附加到字符数组末尾:
strcpy(charr1,charr2); //copy charr2 to charr1
strcat(charr1,charr2); //append contents of charr2 tO char1
strlen()和size()的区别:
- 函数strlen( )是一个常规函数,它接受一个C风格字符串作为参数,并返回该字符串包含的字符数(注意不包括最后的空字符)。
- size()是string类的一个方法,功能基本上与strlen( )相同,也不包括最后的空字符
🎈2.string类对象与字符数组的区别
- string类对象和字符数组之间的主要区别是,可以将string 对象声明为简单变量,而不是数组
- 类设计让程序能够自动处理string的大小。例如 strI 的声明创建一个长度为0的sting对象;但程序将输入读取到str中时,将自动调整str1的长度。这使得与使用数组相比,使用string对象更方便,也更安全。
- 从理论上说,可以将 char 数组视为一组用于存储一个字符串的char存储单元,而string类变量是一个表示字符串的实体。
- 不能将一个数组赋给另一个数组,但可以将一个string对象赋给另一个string对象
原始字符串:
在原始字符串中,字符表示的就是自己,例如,序列\n不表示换行符,而表示两个常规字符—斜杠和n,用前缀R来标识原始字符串:
cout << R"(Jimn "King" Tutt uses " \n" instead of endl.) " << '\n ';
输入原始字符串时,按回车键不仅会移到下一行,还将在原始字符串中添加回车字符。