C++基础的不能再基础的学习笔记——标准库类型string

string类型

string类型表示可变长的字符序列,使用string类型必须引入string头文件。

#include <string>
using namespace std;
一、定义和初始化string对象

在字符串字面值中,编译器在每一个字符串字面值的结尾处都加上一个空字符’\0’,例如“fancy”,就变成了”fancy\0”。

定义和初始化string对象有许多方式。

string s1;             //一个空字符串
//以下两种方式是等同的
string s2 = "fancy";   //将字面值"fancy"除空字符外赋值给s2
string s3("fancy");
//以下两种方式是等同的
string s4 = s2;
string s5(s3);

string s6(5,'c');     //s6为ccccc

注意s2和s3的赋值是等价的,但又有不同,s2执行的是拷贝初始化(认为有等号的就是拷贝初始化),而s3执行的是直接初始化

二、string对象的操作
1. 读写string

① 普通读写— 用IO操作符读写string对象

在读操作时,会自动忽略开头的空白(空格符,换行符,制表符),从第一个字符开始读起,到之后第一个空白符结束

string s, ss;

//输入 "    hello world   ", s 为 hello
cout << "请输入" << endl;
cin >> s;
cout << s << endl;

//输入 "    hello world   ", s 为 hello ss 为 world
cout << "请输入" << endl;
cin >> s >> ss;
cout << s << ss << endl;

② 整行读写—用getline(is,s)读取string对象

当我们需要保留输入数据中的空格时,普通的输入符是做不到的,要用getline(is,s)函数来代替输入符,getline(is,s)从is中读取字符串,以换行符为分割,将回车符之前的字符赋给s(不包括换行符)。

string line;

//getline()返回cin,可以判断输入流是否结束或损坏
while (getline(cin, line))
{
    cout << line << endl;
}
2. empty()和size()

① empty()—判断对象是否为空,返回bool类型,空1不空0。

② size()—获取对象长度,注意size()函数返回的是一个无符号整型数,是string::size_type类型的(一个神秘的类型,不深究)。

3. 比较string对象

C++提供的许多运算符也可用于比较两个string类型的对象,在比较过程中,对大小写敏感

== 、!= 运算符用于比较两个string对象是否相同(当且仅当长度和字母完全相同)。
<、>、>=、<= 运算符用于比较两个string对象的大小(按字典序进行比较)。

4. 拼接string

① 两个string对象拼接

string c1 = "fancy", c2 = "666";
string c3 = c1 + c2;
c1 += c3;

② string对象和字面值拼接 保证每个加号左右两边至少有一个string对象

string c1 = "fancy", c2 = "666";

string c4 = c1 + ' ' + c2;     //合法
string c5 = c1 + "love";       //合法

string c6 = c1 + ' ' + "love"; //合法,c1 + ' '运算结束后是一个临时string对象
string c7 = ' ' + "love" + c1; //非法
三、处理string对象中的字符

C++提供了cctype头文件(实际上是C语言中的ctype.h),提供给我们获取字符属性的函数。

范围for语句

范围for语句可以很好的使我们,对string对象的每一字符进行处理。

for( 变量 : 对象)
    操作;

其中,每一次循环,变量都会被初始化为对象的下一个元素值

string cute = "fancy";

for (auto c : cute)     //auto使编译器自动识别c的类型。
    cout << c;
cout << endl;

//小写变大写
for (auto &c : cute)
    c = toupper(c);
cout << cute << endl;

关于string类型,在后续顺序容器中有更详细的解释:
http://blog.csdn.net/fancynece/article/details/79225748

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于计算机专业的学生而言,参加各类比赛能够带来多方面的益处,具体包括但不限于以下几点: 技能提升: 参与比赛促使学生深入学习和掌握计算机领域的专业知识与技能,如编程语言、算法设计、软件工程、网络安全等。 比赛通常涉及实际问题的解决,有助于将理论知识应用于实践中,增强问题解决能力。 实践经验: 大多数比赛都要求参赛者设计并实现解决方案,这提供了宝贵的动手操作机会,有助于积累项目经验。 实践经验对于计算机专业的学生尤为重要,因为雇主往往更青睐有实际项目背景的候选人。 团队合作: 许多比赛鼓励团队协作,这有助于培养学生的团队精神、沟通技巧和领导能力。 团队合作还能促进学生之间的知识共享和思维碰撞,有助于形成更全面的解决方案。 职业发展: 获奖经历可以显著增强简历的吸引力,为求职或继续深造提供有力支持。 某些比赛可能直接与企业合作,提供实习、工作机会或奖学金,为学生的职业生涯打开更多门路。 网络拓展: 比赛是结识同行业人才的好机会,可以帮助学生建立行业联系,这对于未来的职业发展非常重要。 奖金与荣誉: 许多比赛提供奖金或奖品,这不仅能给予学生经济上的奖励,还能增强其成就感和自信心。 荣誉证书或奖状可以证明学生的成就,对个人品牌建设有积极作用。 创新与研究: 参加比赛可以激发学生的创新思维,推动科研项目的开展,有时甚至能促成学术论文的发表。 个人成长: 在准备和参加比赛的过程中,学生将面临压力与挑战,这有助于培养良好的心理素质和抗压能力。 自我挑战和克服困难的经历对个人成长有着深远的影响。 综上所述,参加计算机领域的比赛对于学生来说是一个全面发展的平台,不仅可以提升专业技能,还能增强团队协作、沟通、解决问题的能力,并为未来的职业生涯奠定坚实的基础
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值