c++ Prime读书笔记5(c风格字符串和string)

混合使用C 风格的字符串与string 对象如下所示

const char *pc = ", ";

string s1( "hello" );

string s2( "world" );

string s3 = s1 + pc + s2 + "/n";

这种连接策略比较受欢迎因为它使s1 s2 处于一种更容易被重用的形式这种方法

能够生效是由于string 类型能够自动将C 风格的字符串转换成string 对象

例如这使我们可以将一个C 风格的字符串赋给一个string 对象

string s1;

const char *pc = "a character array";

s1 = pc; // ok

但是反向的转换不能自动执行,对隐式地将string 对象转换成C 风格的字符串string

类型没有提供支持。例如下面试图用s1 初始化str 就会在编译时刻失败

char *str = s1; // 编译时刻类型错误

为实现这种转换必须显式地调用名为c_str()的操作

char *str = s1.c_str(); // 几乎是正确的但是还差一点

名字c_str()代表了string 类型与C 风格字符串两种表示法之间的关系,字面意思是给我一个C 风格的字符串表示——即指向字符数组起始处的字符指针。但是这个初始化还是失败了,这次是由于另外一个不同的原因:

为了防止字符数组被程序直接处理,c_str()返回了一个指向常量数组的指针const char*

str 被定义为非常量指针所以这个赋值被标记为类型违例正确的初始化如下

const char *str = s1.c_str(); // ok

 

string 类型支持通过下标操作符访问单个字符例。如在下面的代码段中字符串中的所有句号被下划线代替

string str( "fa.disney.com" );

int size = str.size();

for ( int ix = 0; ix < size; ++ix )

if ( str[ ix ] == '.' )

str[ ix ] = '_';

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值