string,vector标准库类型(上)(c++ primer 复习)

本文详细介绍了C++标准库中的string类型,包括string的定义、初始化方式、基本操作如读写、比较、赋值等,以及如何处理string对象中的字符。

     标准库类型string

标准库类型string:表示可变长的字符序列,使用string类型必须首先包含string头文件。作为标准库的一部分,string定义在命名空间std中,如:

#include <string> 

using std::string;

  1.定义和初始化string对象

     1)拷贝初始化:使用等号(=)初始化的变量(编译器把等号右侧的初始值拷贝到新创的对象中去。)

     2)直接初始化:不使用等号初始化对象

当初始值只有一个值时直接初始化拷贝初始化都行。如果初始化多个值,一般来说只能使用直接初始化的方式

     例如: string s1="zxk";             //拷贝初始化

string s2=string(10,'c');   //拷贝初始化   虽然使用拷贝初始化达到了初始化多个值,但显                    //然没有任何补偿的优势,且可读性较差

 string s3("zxk");      //直接初始化

string s4(10,'c');     //直接初始化(按照所给字符重复若干次)

2.string对象上的操作

  1)读写string对象(不含空格)

      我们知道,使用标准库中的iostream来读写int double等内置类型的值。同样,也可以使用IO操作符读写string对象:

//只写main函数中的内容

int main()

{

   string s;

   cin>>s;

   cout<<s<<endl;

   return 0;
}

   读写未知数量的string对象:

int main()

{

   string word;

   while(cin>>word)  //当非法输入或遇到文件结束标记时结束循环
       cout<<word<<endl;

   return 0;

}

  2).使用getline读取一整行(保留空白字符)

int main()

{

  string line;

  while(getline(cin,line))   //getline返回它的流参数line中不包含换行符,使用endl刷新显示缓冲区(防

      cout<<line<<endl;//止发生错误时出错位置错误判断

  return 0;
}

  3).string的empty和size操作

     顾名思义,empty函数用来判断string对象是否为空,返回一个布尔类型的值

          if(!line.empty())

     size函数返回string对象的长度

  if(line.size()>80)

   4).string::size_type类型

      对于size函数返回一个string::size_type类型的值(由此可知,size_type是在string类中定义的),是一个无符号类型的值,而且做够放下任意string对象的大小。

     新c++标准,允许编译器通过auto或者decltype来推断变量的类型:

       auto len=line.size();    //len的类型是string::size_type

注意:如果表达式中已经有了size()函数就不要用int了,这样可以避免混用int和unsigned可能带来的问题。

   5).比较对象(==  !=)(这里就不做多余的解说了)

   6).为string对象赋值

string st1(10,'c'),st2;   //st1的内容是c(10个)st2是一个空字符串

st1=st2;                   //赋值,用st2的副本替换st1的内容,此时st1和st2都是空字符串

   7).两个string对象相加

      两个string对象相加得到一个新的string对象,其内容是把左侧的运算对象与右侧的运算对象相连起来

      例如:

string s1="hello, ",s2="world\n";

string s3=s1+s2;         //内容是hello,world\n

   8).字面值和string对象相加

讲重点:标准库允许把字面值和字符串字面量(由于某些历史原因,也为了兼容c语言,所以c++语言中的字符串字面值并不是标准库类型string的对象,切记字符串字面值(字符字面值也是)与string不同的类型)转换成string对象,所以在需要string对象的地方可以使用这两种字面值来替换。当把string对象和字符字面值及字符串字面值混在一起使用时,必须确保每个加法运算符两侧的对象至少有一个是string:

          string s1=s2+’+';  //正确

string s3="hello"+"," ;//错误

string s4=s5+","+"world";  //正确,先计算前面一部分,得到string对象

3.处理string对象中的字符(cctype头文件中的函数)

  1).处理每个字符(使用基于范围的for语句)          

    新c++标准提供的一种语句:范围for(range for)语句.这种语句遍历给定序列的每个元素,并对序列中的每个值执行某种操作,其语法形式为:

for(declaration : expression)  //declaration部分负责定义一个变量,该变量将被用于访问序列 statement //中的基础元素,expression部分是一个对象,用于表示一个序列。

    例如:输出字符串中的字符

  string str("some string");

  for(auto c: str) //每行输出一个str中的一个字符,每进行一个循环都会输出一个字符

      cout<<c<<endl;

    例如:使用范围for语句改变字符串中的字符

            如果想要改变字符串中字符的值,必须把循环变量定义成引用类型。

  string s("Hello World...");

  for(auto &c : c); //对于s中每一个字符(注意c是引用)

        c=toupper(c); //c为引用,此时赋值语句将改变s中字符的值

  cout<<s<<endl; //toupper函数为标准库函数,用来接受一个字符,输出其大写形式

  2).处理部分字符

       想要处理string对象中的单个字符有两种方式:一种是使用下标,另外一种是使用迭代器(这里不做介绍)

       下表运算符([])接受的输入参数是string::size_type类型的值,这个参数要访问的字符的位置返回值是该位置上字符的引用(string对象下表必须大于等于0小于s.size(),超过范围讲出现不可预知的结果)

                 if(!s.empty()) //确定有这个字符

cout<<s[0]<<endl;  //输出字符

既然返回引用,换言之可以对字符进行写操作

 string s("some string");

 if(!s.empty())

s[0]=toupper(s[0]);

和使用内置数组一样,在 合法(不越界)的范围内,可使用下标法对对象中的字符随机访问





         







该数据集通过合成方式模拟了多种发动机在运行过程中的传感器监测数据,旨在构建一个用于机械系统故障检测的基准资源,特别适用于汽车领域的诊断分析。数据按固定时间间隔采集,涵盖了发动机性能指标、异常状态以及工作模式等多维度信息。 时间戳:数据类型为日期时间,记录了每个数据点的采集时刻。序列起始于2024年12月24日10:00,并以5分钟为间隔持续生成,体现了对发动机运行状态的连续监测。 温度(摄氏度):以浮点数形式记录发动机的温度读数。其数值范围通常处于60至120摄氏度之间,反映了发动机在常规工况下的典型温度区间。 转速(转/分钟):以浮点数表示发动机曲轴的旋转速度。该参数在1000至4000转/分钟的范围内随机生成,符合多数发动机在正常运转时的转速特征。 燃油效率(公里/升):浮点型变量,用于衡量发动机的燃料利用效能,即每升燃料所能支持的行驶里程。其取值范围设定在15至30公里/升之间。 振动_X、振动_Y、振动_Z:这三个浮点数列分别记录了发动机在三维空间坐标系中各轴向的振动强度。测量值标准化至0到1的标度,较高的数值通常暗示存在异常振动,可能与潜在的机械故障相关。 扭矩(牛·米):以浮点数表征发动机输出的旋转力矩,数值区间为50至200牛·米,体现了发动机的负载能力。 功率输出(千瓦):浮点型变量,描述发动机单位时间内做功的速率,取值范围为20至100千瓦。 故障状态:整型分类变量,用于标识发动机的异常程度,共分为四个等级:0代表正常状态,1表示轻微故障,2对应中等故障,3指示严重故障。该列作为分类任务的目标变量,支持基于传感器数据预测故障等级。 运行模式:字符串类型变量,描述发动机当前的工作状态,主要包括:怠速(发动机运转但无负载)、巡航(发动机在常规负载下平稳运行)、重载(发动机承受高负荷或高压工况)。 数据集整体包含1000条记录,每条记录对应特定时刻的发动机性能快照。其中故障状态涵盖从正常到严重故障的四级分类,有助于训练模型实现故障预测与诊断。所有数据均为合成生成,旨在模拟真实的发动机性能变化与典型故障场景,所包含的温度、转速、燃油效率、振动、扭矩及功率输出等关键传感指标,均为影响发动机故障判定的重要因素。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值