C++基础知识要点--字符串、向量和数组
创始人
2024-04-08 08:12:23

目录

    • C++基础知识要点--字符串、向量和数组
      • 1、命名空间的using声明
      • 2、标准库类型string
        • string对象上的操作
        • 处理string对象中的字符
      • 3、标准库类型vector
      • 4、迭代器的介绍
      • 5、数值
      • 6、多维数组

C++基础知识要点–字符串、向量和数组

1、命名空间的using声明

有了using声明就无须专门的前缀(形如命名空间 :: )也能使用所需的名字了。using声明具有如下的形式:

using namespace::name ;

一旦声明了上述语句,就可以直接访问命名空间中的名字:

#include 
//using声明,当我们使用名字cin时,从命名空间std中获取它
using std::cin;
int main (){int i;cin >> i;  //正确:cin和std: :cin含义相同cout << i;  //错误:没有对应的using声明,必须使用完整的名字std::cout << i;   //正确:显式地从std中使用coutreturn 0;
}

注:头文件不应包含using声明

2、标准库类型string

#include 
using std::string;

直接初始化和拷贝初始化

  • 如果使用等号(=)初始化一个变量,实际上执行的是拷贝初始化(copy initialization),编译器把等号右侧的初始值拷贝到新创建的对象中去。
  • 与之相反,如果不使用等号,则执行的是直接初始化
  • 当初始值只有一个时,使用直接初始化或拷贝初始化都行。如果像上面的s7那样初始化要用到的值有多个,一般来说只能使用直接初始化的方式:
string s5 = "hiya" ;  //拷贝初始化
string s6 ( "hiya" ) ;  //直接初始化
string s7(10, 'c') ;   //直接初始化,s7的内容是cccccccccc

string对象上的操作

在这里插入图片描述
读写string对象

int main ()
string s;   //空字符串
cin >> S;   //将string对象读入s,遇到空白(即空格符、换行符、制表符等)停止
cout << s << endl;  //输出s
string line;
//每次读入一整行,直至到达文件末尾
while (getline (cin, line))  //getline函数直到遇到换行符为止cout << line << endl;return 0;

string::size_type类型
由于size函数返回的是一个无符号整型数,因此切记,如果在表达式中混用了带符号数和无符号数将可能产生意想不到的结果

  • 例如,假设n是一个具有负值的int,则表达式s.size ( )
  • 如果一条表达式中已经有了size()函数就不要再使用int了,这样可以避免混用int和unsigned可能带来的问题。

string加法:
当把string对象字符字面值字符串字面值混在一条语句中使用时,必须确保 每个加法运算符(+) 的两侧的运算对象至少有一个是string:

string s4 = s1 +",";    //正确:把一个string对象和一个字面值相加
string s5 = "hello"+ ",";     //错误:两个运算对象都不是string
//正确:每个加法运算符都有一个运算对象是string
string s6 = s1 + "," + "wor1d" ;  //表达式s1+ ","的结果是一个string对象
string s7 = "hello" + "," + s2;  //错误:不能把字面值直接相加

:因为某些历史原因,也为了与C兼容,所以C++语言中的字符串字面值并不是标准库类型string的对象。切记,字符串字面值与string是不同的类型。

处理string对象中的字符

在cctype头文件中定义了一组标准库函数处理这部分工作,表3.3列出了主要的函数名及其含义。
在这里插入图片描述

使用C++版本的C标准库头文件
cctype头文件(从C语言继承)和ctype.h头文件的内容是一样的,只不过从命名规范上来讲更符合C++语言的要求。特别的,在名为cname的头文件中定义的名字从属于命名空间 std,而定义在名为.h的头文件中的则不然。

使用范围for语句改变字符串中的字符
如果想要改变string对象中字符的值,必须把循环变量定义成引用类型,所谓引用只是给定对象的一个别名,因此当使用引用作为循环控制变量时,这个变量实际上被依次绑定到了序列的每个元素上。使用这个引用,我们就能改变它绑定的字符。

string s("Hello world!!!" );   
//转换成大写形式。
for (auto &c : s)     //对于s中的每个字符(注意:c是引用)c= toupper(c) ;   //c是一个引用,因此赋值语句将改变s中字符的值
cout << s << endl;

下标运算符

  • 使用下标时必须确保其在合理范围之内,也就是说,下标必须大于等于0而小于字符串的 size()的值。
  • 一种简便易行的方法是,总是设下标的类型为string;:size_type,因为此类型是无符号数,可以确保下标不会小于0。
string::size_type num;    //用于保存从输入流读取的数
  • 此时,代码只需保证下标小于size()的值就可以了。
//依次处理s中的字符直至我们处理完全部字符或者遇到一个空白
for (decltype(s.size()) index = 0; index != s.size() && !isspace (s[index]); ++index)s[index] = toupper(s[index] );//将当前字符改成大写形式

程序的输出结果将是:

SOME string

3、标准库类型vector

4、迭代器的介绍

5、数值

6、多维数组

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...