c++ string类

本文默认都以vs2022编译器演示

string是c++中的一个类,以顺序表的形式存储字符串。这是一个string类型的截图

需要包含头文件string

01:string 的初始化

        001:空字符串   

                string str;

                 创建一个空字符串

        002:使用C语言字符串初始化。

                  string str("hello world");

        003: 用另一个string初始化      

                  string str(str2);

        04: 传参(int,char)

                  字符串被初始化为i个字符c 

                   string str(10,a); 

 测试

         

02:string的赋值操作

        001:c语言字符串赋值

                str ="hello world";

注意

可以看出这是一个值拷贝,而非c语言式的拷贝地址。        

        002: string类型赋值

                str2=str1;

                str2与str1内容相同

        003: 单个字符赋值

                str ='c';    

                此时str内的元素为"c"  字符串!

        004: assign( char*)

                str.assign("hello world");

                str被初始化为hello world

        005:assign(char* s,int n)

                把s中前n个字符赋值

                str.assign("hello wold" ,5);

 注意

当n大于s 的长度时,assert会越界把str后面的数据也拷贝过来,因为str默认以'\0'结尾,cout在读到'\0'时,认为数组已经结束,故输出的是没问题的。在'\0’之后是一些无意义的随机值。在调用size或end之类函数时很可能会出现问题!!!

        006:assign(string s1)

                str.assign(str1);

                把str1中的元素拷贝给str

        007: assign(int n,char c)

                str.assign(10,'a')

                str中元素为10个a字符;

测试:

03:常用函数

        000:一些简单的函数  

  1. begin                           获取首元素地址  (用 string::iterator类型元素接收)      
  2. clear                            清空字符串
  3. cmpare(char*/string)   比较             
  4. empty                          判空
  5. end                              尾元素地址
  6. pop_back                    尾删
  7. push_back(char)         尾插
  8. size                             返回字符串长度

                

        001:追加append()

                追加字符串,参数可为

                1 char*字符串  ,

                2 string类字符串 ,

                3 char类字符 ,

                4(string ,int int) 第一个string代表来源字符串,第二个源原字符串追加的起始下标第 三个代表追加的个数 。第二个int可去,代表全部拷过去  

                +=符号也可实现拼接

        002:查找 find(),rfind ()

                 第一个参数为char/char*/string,第二个参数为int,代表开始查找的位置,默认为0,找到了返回下标(int类型),找不到返回 -1.

                 rfind从右向左找,操作与find相同。

        003:替换 repleace()

                参数(int,int ,char*/string)

                第一个int代表开始替换的下标,第二个int代表结束替换的下标,把两个下标之间的字符串替换成第三个字符串。

        004:  访问/修改 at

                at(下标)访问该下标的元素

                at(下标)=  m   修改该下标的元素为m

                其实和 [ ]用法差不多           

        005 :插入 insert

                参数(int(下标),char*,string(插入的字符串))。

        006:  删除erase

                参数(int(下标),int(删除的个数))。

         007:截取 substr

                str=str1.substr(int(开始截取的下标),int(截取的个数)),

测试:

#include<string>
#include<iostream>

using namespace std;

int main()
{
	string str1;//追加
	string str2;//
	string str3;//查找
	string str4;//拼接
	string str5;//访问&&修改
	string str6;//插入
	string str7;//删除
	string str8;//获取子串

	str1 = "hello ";
	str2 = " worldxxxxxxxx";
	str1.append(str2, 1,20);
	cout << "str1 = " << str1 << endl;

	str3 = "abcdefabcdef";
	int pos2 = str3.rfind("bc", 5);
	cout << pos2 << endl;

	str4 = "hello world";
	str4.replace(0, 0,"xxxxxxxxxxx");
	cout << "str4 = " << str4 << endl;

	str5 = "hello world";
	str5.at(6) = 'x';
	cout << "str5 = " << str5 << endl;

	str6 = "hello world";
	str6.insert(6, "xxxxxx");
	cout << "str6 = " << str6 << endl;
	
	str7 = "hello world";
	str7 = str7.erase(5,6);
	cout << "str7 = " << str7 << endl;

	str8 = "hello world";
	str8 = str8.substr(0, 5);
	cout << "str8 = " << str8 << endl;

	system("pause");
	return 0;
}

04:由整数字符构成的字符串转整数

        001:c_str函数

        该函数会返回string中字符串的首元素地址。注意不是string的地址

        002:atoi函数

        atoi用于把一个由数字字符构成的字符串转成int型

类似的 atol可以转成long long类型

           atof可以转成float 类型

其他:

        可以使用to_string(int)把整形再转成字符串。

感谢观看

如果需要代码的话:

string.cpp · 阿巴啊巴DDDD/C_daima - 码云 - 开源中国 (gitee.com)

study_c-/string.cpp at main · ffffffffake/study_c- (github.com)

  • 21
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值