尊宝国际娱乐APP下载

设为首页收藏本站

编程十万个为什么,属于程序员的编程论坛

 找回密码
 5秒快速注册
QQ登录 只需一步,快速开始
搜索
查看: 1398|回复: 1
打印 上一主题 下一主题

[原创] c++零基础快速入门教程--[标准库类型string]

[复制链接]
跳转到指定楼层
传说中的楼主
发表于 2016-9-21 11:16:36 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
3.1          命名空间的using声明。
                截止目前为止,我们用到的库函数基本上都属于命名空间std,而程序也显示的将这一点标示了出来。如 std::cin 标示从标准输入中读取内容。此处我们使用作用域操作符(::)的含义是:编译器应从操作符左侧名字所示的作用域中寻找右侧那个名字。
                上面的方法显得比较麻烦,下面将介绍一种简单安全的方法,也就是using声明。
                 using namespace::name;
                按照规定,每个using声明引入命名空间中的一个成员。
               
3.2         标准库类型string
                标准库类型string表示可变长的字符序列,使用string类型必须首先包含string头文件,作为标准库的一部分,string定义在命名空间std中。
3.2.1      定义和初始化string对象。
              一个类可以定义很多种初始化对象的方式,只不过这些方式之间是有区别的:或者是初始值的数量不同,或者是初始值的类型不同。
            
                               


3.2.2     string对象上的操作
             一个类除了除了要规定初始化其对象的方式外,还要定义对象上所能执行的操作。
              
              读写string对象
              
             读入未知数量的string对象
              
            使用getline读取一整行

            
            string的empty和size操作
            
           


string::size_type类型
         尽管我们不太情书string::size_type类型的细节,但是有一点是肯定的:它是一个无符号类型的值而且能足够存放下任何string对象的大小。所有用于存放string类的size函数返回值的变量,都应该是string::size_type类型的。
         在C++11标准中,允许编译器通过auto或者decltyp来推断变量的类型。
         auto len =line.size();        //len的类型是string::size_type
string对象的比较
         string类定义了几种用于比较字符串的运算符,这些比较运算符注意比较string对象中的字符,并且对大小写敏感,也就是说,在比较时同一个字母的大小写形式和小写形式是不同的。
         相等性运算符(==和!=)分别检验两个string对象相等或不相等,string对象相等意味着他们的长度相同而且所包含的字符也全都相同。关系运算符<、<=、>、>=分别检验一个string对象是否小于、大于等于、大于、大于等于另一个string对象。上面这些运算符都依照(大小写敏感的)字典顺序:
         1.      如果两个string对象的长度不同,而且较短string对象的每个字符都与较长的额string对象对应位置上的字符相同,就说较短string对象小于较长string对象。
         2.      如果两个 string 对象在某些对应位置上上不一致,则string对象比较的结果其实是string对象中一堆相异字符比较结果。
string对象赋值
        对于string类而言,允许把一个对象的值赋值给另一个对象:
        string st1(10, ’c’), st2;       //初始化st110个“c”的副本,st2为空字符串
        st1 = st2;                               //赋值:用st2 的副本替换st1的内容,此时
                                                        //st1st2都是空字符串
两个string对象相加
        string s1 = “hello, ”, s2 = “world\n”;
        string s3 = s1 + s2;             //s3的内容是hello,world\n
        s1 += s2;                                //等价于s1 = s1 +s2
字面值和string对象相加
        C++标准库允许把字面值和字符串字面值转换成string对象,所以在需要string对象的地方就可以使用这两种字面值来代替。
         string s1 = “hello”, s2 = “world”;
         string s3 = s1 + “, ” + s2 + “\n”;
         当把string对象和字符串字面值混在一条语句中使用时,必须确保每个加法运算符(+)的两侧的运算对象至少有一个是string
         string s4 = s1 + “, ”;                     //ok
         string s5 = “hello” + “, ”              //error,两个运算符对象都不是string
         string s6 = s1 + “, ” + “world”;  //ok
         string s7 = “Hello” + “, ” + s2;   //error,不能把字面值直接相加
处理string对象中的字符
         我们经常要需要单独处理string对象中的字符,比如检查一个string对象中是否包含空白,或者把string对象中的字母改成小写,再或者查看某个特定字符是否出现等。在c++头文件cctype中定义了一组标准库函数处理这部分的工作。
         

使用for循环处理每个字符
         
使用for循环改变字符串中的字符
            
只处理一部分字符
            
使用下面执行迭代
              
for循环使用index作为s的下标,index的类型是有decltype关键字决定。首先index初始化为0,这样第一次迭代就会从s的首字符开始;之后每次迭代将index加1以得到s的下一个字符。循环体负责将当前的字母改为大写形式。

使用下标执行随机访问
              

首先初始化变量hexdigits令其存放从0到F的十六进制数字,注意我们把hexdigits声明成了常量,这是因为在后面的过程中不打算修改它的值。在循环内部使用输入值n作为hexdigits的下标,hexdigits[n]的值就是hexdigits内位置n处的字符。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 !wechat_share!!wechat_share!
收藏收藏 转播转播 分享分享 分享淘帖 顶一个顶一个 踩一下踩一下

BcWhy版权声明1、本帖可以任何形式转载到任何媒体,但必须带上本贴的URL连接,否则即视为同意支付 1000 元报酬
2、本主题所有言论和图片纯属黄瓜个人意见,与本论坛立场无关
3、本主题由该帖子作者黄瓜发表,该帖子作者黄瓜与本站享有帖子相关版权
4、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
5、本站管理员和版主有权不事先通知发贴者而删除本文

您需要登录后才可以回帖 登录 | 5秒快速注册
本版积分规则
关闭

BcWhy推荐上一条 /1 下一条

QQ|关于我们|最新帖子|小黑屋|手机版|编程十万个为什么 ( 粤ICP备16108587号-2   GMT+8, 2017-8-18 05:34 , Processed in 0.187146 second(s), 35 queries , File On.
Powered by Discuz! X3.3 © 2001-2017 Comsenz Inc.
快速回复 返回顶部 返回列表
尊宝国际娱乐APP下载亚虎娱乐手机官方网站亚虎国际娱乐齐乐娱乐国际
优乐娱乐齐乐娱乐网优乐娱乐龙8娱乐手机下载
优乐娱乐亚虎娱乐手机官方网站亚虎国际娱乐梦之城娱乐
尊宝国际娱乐APP下载尊宝国际手机首页尊宝国际娱乐城齐乐娱乐国际
优乐娱乐齐乐娱乐网优乐娱乐龙8娱乐手机下载