第1章 字符串

 

字符串是程序中经常使用的一种数据类型。串,顾名思义就是一些列单个元素的连接组合,那么字符串也就是由一系列单个字符连接而成。在上一堂课上,我们有一行代码是:std::cout<<"Hello world!"<<std::endl; 这行代码中,我给大家介绍了两个C++标准库对象以及使用方法。但是其中的"Hello world!"我没有给大家解释,其实这就是C++中的字符串字面量。

 

这里提到一个字面量,可能有些朋友就要犯糊涂了,因为这个词似乎没有听说过。所谓字面量,就是从字面上直接表现其值的常量。C++中字面量就是我们在写程序的时候直接写出来的一些值,比如125.1ahello等等。C++中表示字符字面量和字符串字面量的语法不同,单个字符用一对单引号括起来,而字符串是由一对双引号括起来。

 

说完了字面量,下面就介绍C++中使用字符串的常用方法。

 

这里我将介绍std::string。相信听了上一堂课的朋友可能会联想到,这又是一个标准库对象。这个联想对了一半,为什么说是一半呢?std::string的确是标准库设施没错,但是它不是一个对象,而是一个标准库定义的类型,类型就是用来修饰对象的。我们说上一堂课的std::cout对象是一个std::ostream类型的对象,也就表示std::cout是由std::ostream类型所修饰。

 

这里我先岔开话题,介绍一下什么是对象,因为往后的课程中我会大量使用这个概念。我所指的对象是一个较为宽泛的概念,并把它分为无名对象和有名对象。像我们上面提到的字面量就是一种无名对象,这种对象只有值,而没有名字,所以说我们一般不能通过名字去访问它。程序中我们更多使用的是有名对象,因为我们会常常对一个对象访问多次,为了能够准确的找到对象,我们就为其命名,然后就可以通过名字来找到它了。对象和类型是分不开的,类型是一个对象的必备属性,值也是对象的必备属性,有了类型和值就可以构成一个对象。有些对象还具备接口,这些接口由其类型所描述,所有具备此类型的对象都具有相同的接口。对于接口这个概念我们后面会提到。

 

一个对象都有生命周期,它在其生命周期内保持有效性,当生命周期结束时,那么这个对象也就不存在了,也就是无效了。那什么决定其生命周期呢?这得分几种情况。目前为止,我们接触到的对象是被称作局部对象的一种存在于栈中的对象(如果不知道什么是栈,可以查阅相关资料),以及本堂课会出现的全局对象和临时对象。全局对象,顾名思义就是属于整个程序中的对象,其生命周期也是伴随整个程序的,它是一种生命周期较长的对象。而临时对象的生命周期一般是在其表达式内,表达式结束,其生命期也就结束。局部对象则是由一对{}来决定,而且是包含这个对象的最内层的{}。以后我们还会接触到更多的情况,大家准备好,我们一步一步慢慢的将这些概念深刻于脑中。

参考文章

 

回到正题,我们使用std::string来创建一个无名对象的方法是std::string(hello);这是个构造对象的语法。调用的是std::string的一个构造函数。这里提到的构造函数就是std::string类型的一个接口。所谓接口,就是对象所属类型提供的用来操作访问对象的一组方法。当然,std::string还提供了很多接口,我们将这些接口(除了构造函数和析构函数)统一的称为成员函数。这一课我们将接触到std::string的三种构造函数以及不同的构造形式,还将利用其几个接口来完成我们对字符串的操作(包括字符串拼接、输出、拷贝等)。

 

有些时候,我们需要使用到一个字符串,但是我们又绝对不会去修改这个字符串,那么它应该成为一个常量(即不会改变的量)C++中定义常量用const关键字,定义一个字符串常量,我们使用const std::string name(ghost);这样的语法。如果我们试图通过这个有名对象的名字name去修改它,编译器将会给出严厉的错误提示。

 

最后,我谈谈学习的方法。当我们学习一个新鲜的事物的时候,总是会有好多好多得疑问,并且特别想把它的方方面面全都掌握。然而欲速则不达,我们应该以一种循序渐进的方法来学习。或许今天的例子中存在非常多得知识点,并且会产生很多的疑问,但是我们应该以今天我们学习的主体内容为主,将这些与主题内容符合的知识点学到手,学扎实。漏掉的东西不是不学,而是它应该在后面的某个时段出现才合适,所以我们就耐心的等到该学习它的时候再去研究,到时回头看以前的例子也就会明白更多了。

 

好了,这堂课涉及的一些概念差不多就这些了,更多的细节在课堂上我们会一一讲解。

 

下一课:C++课堂第2章 循环和计数 希望我的课堂对大家学习C++有所帮助

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值