string类详解

本文详细介绍了C++标准库中string类的定义、初始化方法,以及对象的各种操作,如判断是否为空、计算长度、字符访问、字符串连接、相等性判断和获取C语言风格指针。强调了string类相对于C语言字符变量的灵活性和优势。

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

文章目录

  • 前言
  • 一、定义和初始化string对象
  • 二、string的对象操作
    • 1..判断对象是否为空
    • 2.计算字符/字节数量
    • 3. 单个字符的访问
    • 4.字符串的连接和相等判断
    • 5.得到C语言风格的指针
  • 总结


前言

提示:这里可以添加本文要记录的大概内容:

string类是C++标准库中的一个类,代表一个可变长字符串,功能也是对其的处理。与C语言中的char类型作用相似,但功能更加强大,使用也更加便捷,在c++环境中,更加适用。


提示:以下是本篇文章正文内容,下面案例可供参考

一、定义和初始化string对象

string s1;
string s2="hellow world";
string s3("hellow world");
string s4=s2;
int a=9;
string s5(a,'a');

 定义string对象时,若未初始化对象,则对象保存内容为空。

第二种和第三种都是将"hellow world"保存到内存中,但结尾中不包含/0。它们的作用一样,但建议用()的形式(因为使用=会带来隐式类型转换的问题)。同时我们可以用已定义的对象来初始化对象,也就是将s2中的内容拷贝到s4中。(第四种)。

第五种作用为将a个连续的'a'用于初始化。使用较少,因为会产生临时变量。

(当然了,string对象可以用cout和 cin来输出和输入)。

二、string的对象操作

1.判断对象是否为空 

 我们可以用empty()来判断对象是否为空。实例如下:

string a;
if(a.empty())
{
std::cout<<"a为空"<<std::endl;
}

 empty()的返回值为布尔值。

2.计算字符/字节数量

我们可以通过size()/length()来得到字符串的长度。它们的返回值为该字符串字节/字符数量。

string a;
std::cout<<a.size()<<std::endl;
std::cout<<a.length()<<std::endl;

3. 单个字符的访问

我们可以通过[ ]来访问字符串中的单个字符。[]中数字的范围是0到size-1。也可以超出size-1,但结果不可预测。由此可见,string类对象可以进行遍历(可以用范围for语句进行遍历)。

string a(hellow world);
a[0]='b';//将a的第一个字符修改为b;
std::cout<<a[0]<<std::endl;
std::cout<<a<<std::endl;

 4.字符串的连接和相等判断

string对象允许进行加法运算,其返回值为新的string对象。字面值也可以和string类对象相加,从而得到新的string对象。(但语法上不允许用几个字面值相加的方式来初始化string对象,也就是说,string类进行加法运算必须包含string对象,且两个字符串不能相连)

string s1("abc");
string s2("def");
string s3(s1+s2);//"abcdef"

 我们同样可以用==判断两个string对象是否相等,用!=判断是否不相等。相等条件为内容一模一样(大小写也要一样),字节数也要相同。

5.得到C语言风格的指针

string对象使用c_str()可以返回一个指向C语言风格的字符串的字符串指针变量,这个C语言字符串以/0结尾。其主要目的是兼容C语言。我们可以通过它得到C语言版本的string对象。

string s1("abc");
char *a=s1.c_str();
char b[10];
strcpy_s(b,sizeof(b),a);
std::cout<<b<<std::endl;

同时,我们也可以使用 C语言字符型变量来初始化string对象(不会包含/0)。


总结

总的来说,string相比较C语言的字符型变量来说,更加先进一点,也更加灵活。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鬼多不菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值