C++ string 类型

本文详细介绍了C++标准库中的string类型,包括string对象的定义、初始化、读写操作及常见运算。此外还讲解了如何使用getline读取整行文本,以及string对象之间的比较方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

 

标准库 string 类型  

string 对象的定义和初始化

警告:标准库 string 类型和字符串字面值

string 对象的读写

使用getline读取整行文本

string 对象的操作

两个string对象相加

和字符串字面值的连接

从string 对象获取字符

string 对象中字符的处理


标准库 string 类型  

     string类型支持长度可变的字符串,C++标准库将负责管理与存储字符相关的内存,以及提供各种有用的操作。标准库 string类型的目的就是满足对字符串的一般应用。

     与其它的标准库类型一样,用户程序要使用 string 类型对象,必须包含相关头文件。如果提供了合适的using声明,那么编写出来的程序会变得简短些:

   #include<string>

   using namespace std;

string 对象的定义和初始化

  string 标准库支持几个构造函数。构造函数是一个特殊成员函数,定义如何初始化该类型的对象。下表列出了几个string 类型常用的构造函数。当没有明确指定对象初始化式时,系统将使用默认构造函数。

警告:标准库 string 类型和字符串字面值

    因为历史原因以为为了与C语言兼容,字符串字面值和string 类型不是同一种类型。这一点很容易引起混乱,编程时一定要注意区分字符串字面值和string 数据类型的使用。

string 对象的读写

   用iostream 标准库来读写内置类型的值。使用标准的输入输出操作符来读写 string 对象:

#include<iostream>
using namespace std;
int main()
{
    string s;
    cin>>s;
    cout<<s;
    return 0;
}

从标准输入读取string 并将读入的串存储在s中。string 类型的输入操作符:

1.读取并忽略开头所有的空白符(如空格、换行符、制表符)

2.读取字符直至再次遇到空白字符,读取终止

使用getline读取整行文本

  另外还有一个有用的 string IO操作:getline。这个函数接受两个参数:一个输入流对象和一个string对象。getline函数从输入流的下一行读取,并保存读取的内容不包括换行符。和输入操作符不一样的是,getling并不忽略开头的换行符。只要getline遇到换行符,即便它是输入的第一个字符,getline也将停止读入并返回。如果第一个字符就是换行符,则string参数被置为空string。

#include<iostream>
using namespace std;
int main()
{
    string s;
    while(getline(cin,s))
    {
      cout<<s<<endl;
    }
    return 0;
}

  由于s不含换行符,如要逐行输出需自行添加。照常我们用endl来输出一个换行符并刷新输出缓冲区。

string 对象的操作

 

关系操作符比较两个 string对象时采用了和(大小写敏感的)字典排序相同的策略:

1.如果两个string对象长度不同,且短的string对象与长的string对象的前面部分相匹配,则短的string对象小于长的string对象

2.如果string 对象的字符不同,则比较第一个不匹配的字符。

举个例子:

两个string对象相加

 string对象相加被定义为连接。也就是说,两个(或多个)string 对象可以通过加操作符+或者复合操作符+=连接起来。给定两个string对象:

            string s1("hello,");

            string s2("world\n");

下面把两个string对象连接起来产生第三个string对象:

            string s3=s1+s2; //s3 is hello,worle\n

如果要把s2直接追加到s1的末尾,可以使用 +=操作符;

           s1+=s2;   // 相当于 s1=s1+s2;

和字符串字面值的连接

  

当进行string 对象和字符串面值混合连接操作时,+操作符的左右操作数必须至少有一个是string类型的。

从string 对象获取字符

  string 类型通过下标操作符[]来访问string对象中的单个字符。需要注意的是string对象的下标从0开始

string 对象中字符的处理

 我们经常艺对string 对象中的单个字符进行处理,例如,通常需要知道某个特殊字符是否为空白字符、字母或数字,下表列出了各种字符操作函数,适用于string 对象的字符(或其它任何char值)。这些函数在cctype头文件中定义。

                                                                                                                              摘自《C++ primer》

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值