C++ string字符串类详解


0 概述

在C语言里,字符串是用字符数组来表示的,而对于应用层而言,会经常用到字符串,而继续使用字符数组,就使得效率非常低。所以在C++标准库里,通过类string从新自定义了字符串。头文件<string>

1 构造函数

C++11:

SpecificationConstructor
default (1)string();
copy (2)string (const string& str);
substring (3)string (const string& str, size_t pos, size_t len = npos);
from c-string (4)string (const char* s);
from buffer (5)string (const char* s, size_t n);
fill (6)string (size_t n, char c);
range (7)template < class InputIterator > string (InputIterator first, InputIterator last);
initializer list (8)string (initializer_list il);
move (9)string (string&& str) noexcept;

注:详细说明及示例代码参阅string

2 const char* c_str();

返回一个常量C字符串,内容与本string串相同。
注意:当本string的内容改变,或被析构后,返回的字符串也不会被改变,因为返回的字符串是重新通过new char[]出来.
参考下面代码,可以发现返回的C字符串地址和string里的字符串地址完全不同:

string* str = new string("ASD"); //str="ASD" 
const char* c = str->c_str(); 

cout<<c<<endl;                 //打印 : "ASD" 

printf("&c[0]=%p,&str[0]=%p\n",&c[0],&str[0]);  
                          //打印:c=0x94bf024,&str[0]=0x94bf008

str->append("dd");            //str="ASDdd"   
cout<<c<<endl;                //打印 : "ASD" 

delete str;                  //调用析构 

cout<<c<<endl;               //打印 : "ASD"       

注:详细说明、功能分析及示例代码参阅https://www.cnblogs.com/lifexy/p/8642163.html

3 reverse

头文件< algorithm >中的reverse提供了对string对象的反转功能。

string str("hello");
reverse(str.begin(),str.end());
cout<< str <<endl;              //反转自身字符串,打印olleh

注:详细说明、功能分析及示例代码参阅https://www.cnblogs.com/lifexy/p/8642163.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

i胡说

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

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

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

打赏作者

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

抵扣说明:

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

余额充值