【C++篇】C++字符串:标准库string类

文章介绍了C++中使用标准库string类进行字符串操作的方法,包括string变量的定义、初始化、输入输出以及对象上的各种操作,对比了string类与字符数组的区别,并提到了原始字符串的概念。内容旨在帮助读者理解和掌握C++中更安全、便捷的字符串处理方式。
摘要由CSDN通过智能技术生成

友情链接:C/C++系列系统学习目录

知识总结顺序参考C Primer Plus(第六版)和谭浩强老师的C程序设计(第五版)等,内容以书中为标准,同时参考其它各类书籍以及优质文章,以至减少知识点上的错误,同时方便本人的基础复习,也希望能帮助到大家
 
最好的好人,都是犯过错误的过来人;一个人往往因为有一点小小的缺点,将来会变得更好。如有错漏之处,敬请指正,有更好的方法,也希望不吝提出。最好的生活方式就是和努力的大家,一起奔跑在路上



⛳(二)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 ';

输入原始字符串时,按回车键不仅会移到下一行,还将在原始字符串中添加回车字符。


行文至此,落笔为终。文末搁笔,思绪驳杂。只道谢不道别。早晚复相逢,且祝诸君平安喜乐,万事顺意。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈七.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值