没有合适的资源?快使用搜索试试~ 我知道了~
首页CString string char * int double float 之间转化大全
资源详情
资源推荐
CString string char * int double float
之间转化大全
zjl
总结
一、CString string char* 之间的比较
(一) 和 均是字符串模板类, 为标准模板类()定义的字符串类,
已经纳入 标准之中;
( ) 为 中 最 常 用 的 字 符 串 类 , 继 承 自
类 , 主 要 应 用 在
和
编 程 中 , 主 要 数 据 类 型 有 应 用 于
,!"# , $%
与
#
均可 ;
&为 编程中最常用的字符串指针,一般以'()'为结束标志;
二 构造
是方便的,可以从几乎所有的字符串构造而来,包括 和 &;
次之,可以从基本的一些字符串变量构造而来,包括 &等;
&没有构造函数,仅可以赋值;
举例:
&*+,-#./
* /
/
三 运算符重载
##+
是最方便的,几乎可以直接用所有的字符串赋值,包括 和 &;
次之,可以直接用些基本的字符串赋值,包括 &等;
&只能由指针赋值,并且是极危险的操作,建议使用 或者 ,而且 &在
声明的时候如未赋初值建议先设为 0,以避免野指针,令你抓狂;
举例:
&*+0/
*+!12)3/44当然,以上的直接写成 &*+!12)3/也是一样
*5)52) /
*5,-#. /
/
+*/
/
+*/
+/
13*/
6 ##
与 差不多,可以直接与 &进行加法,但不可以相互使用运算符,即
+ 是非法的,须转换成 &;
&没有运算,只能使用 把两个指针连在一起;
举例:
&*+,-#./
+*/
+*/
+*/
+*/
*5* /
2
CString string char * int double float
之间转化大全
zjl
总结
*5 /44合法
*5 /44非法,由此可见, 可自动转换为 #&,而 不行
##+
是最强大的,几乎可以与所有的字符串变量+,包括 和 &;
次之,可以与基本的一些字符串变量进行+而来,包括 &等;
&没有+运算符,只能使用 把两个指针连在一起;
##13
最好,当越界时会抛出断言异常;
与 &下标越界结果未定义;
举例:
&*+,-#./
+*/
#77183/
+*/
#77183/
#77*183/
##++、##9+、##、##7、##+、#7+
与 之间不可以进行比较,但均可以与 &进行比较,并且比较的是值,而不
是地址;
#77*++ /
#77*++ /
#77++* /
#77++* /44以上代码返回均为 2
四 常用算法
查找
作用&
查找指定值
第一个匹配的值""#::从后面开始查找%;指定匹配方式"
注:" 中是把范围内的值挨个代入匹配函数直至返回
6 比较
作用&查找指定值区分大小写
#
"###7
##
##7+
##+
##++
##9+#
#查找指定值不区分大小写 "
"
<
CString string char * int double float
之间转化大全
zjl
总结
"#
"###
##
注:返回值如果7) 则前面的值小于后面的值,反之亦然
替换
作用&查找指定值"
"
"#
"#"
"%
插入
作用&查找指定值
=
增加作用&动态增加值
#
截取
作用&得到部分值用下标操作6
%
移除
作用&移除部份值#;%#;移除空白值%#;>?
注:此为 提供,非 函数#;"
%
转换大小写
作用&转换大小写"!
"?#!
?0
与其他类型转换
作用&转化为数字#
#
##转化为 &"
@>
@>
- 格式化
作用&格式化#
? 得到长度
作用&
得到长度@得到大小*@#
A
CString string char * int double float
之间转化大全
zjl
总结
判断为空
作用&判断是否为空判断是否++0 或者第一个字符是否是'()'
B
重定义大小
作用&重定义大小#
!*@>
释放资源
作用&释放
13 %>
%>
五 安全性
&;
六 灵活性
&;
七 可移植性
&+
二、CString 和 string 区别
5是 4 共享的5 是 标准库的
相同点:
(2)用他们都可以取代对 &的使用。
(<)都封装了有丰富的字符串操作接口。
(A)他们都是 的类库。CC
以 的使用为例,不能有如下用法:
&+0/44定义一个指向字符串的指针
CD$#!#ED /44在该字符串的末尾粘接上另一个字符。
这样做编译器不会有任何警告和错误,但是运行的时候就会有异常。
原因是没有理解 是一个类,而在定义类的对象的时候是需要调用其构造函数的。上
面既没有调用 的构造函数,而且还把指针赋值为 0,很明显调用该类的对象的接
口的时候会出错。但是编译器却发现不了这个问题的。
正确的方法是如下:
&+!D$#!#ED /
CD$#!#ED /
#77D&FD77&77/
或者不用指针,如下也可以:
/44会自动调用默认的构造函数5构造一个 类的对象。
ED$#!#ED /
#77DFD7777/
(G)他们都使用了模板的技术。
不同之处:
(2)类是微软的 ;提供的 里面的一个类,所以只有支持 的工程
才可以使用。如在 H 上的工程就不能用 了,只能用标准 中的 类了。
另外,因为 类是在 标准库中,所以它被封装在了 命名空间中,使用之前需要
G
CString string char * int double float
之间转化大全
zjl
总结
声明 /而 类并不在 命名空间中,因为它不是 的标准库,只
是微软的一个封装库。这点看来用 类的程序的移植性更好。
(<) 类既是一个标准 的类库,同时也是 (65标准模
版库)中的类库,所以支持 # 操作。
(A) 类和 类提供的方法接口并不完全相同,所以不要糊里糊涂的认为某个类
中怎么没有另外一个类中的方法啊。FC 。。
(G)他们和 &之间的转换方法也不一样。
类型的变量如果要转换成 &类型字符串, 类中提供了三个方法如下:
#&" #44" 直接 返回一 个以 () 结 尾的 字 符串 。 #&
#44直接以数组方式返回 的内容,其大小为 * 的返回值,结尾并没有() 字
符 *"#&65*"5*"#+) #44#把 的内容拷贝
到 6 空间中。
注意:" 的返回类型是指向常量 类型的指针,说明指针所指空间的内容不允许修
改,只可以读取不可以更改。" 返回的指针
是 内部的指针,并没有像 # 函数一样把其内容拷贝出来。这可以从下面例子中看
出来:
&+!D$#!#ED /
#&+C" /44并没有通过 # 或者 ! 为指针 分配内存,只是
把 中的数据指针赋给了 而已
#77D@CFD7777/44正确的输出了 $#!#E
但是如果用 # 方法时必须如下方法:
&+& #2))&*# /44必须为指针 分配内存空间用于存放从 里
拷贝出来的数据
C#5C 5) /44如果没有上面分配内存空间,这个语句在运行时就会报段错
误。
#77D&F##FD7777/44正确的输出了字符串 $#!#
类型字符串对象转换成 &字符串比较麻烦一点,方法也有 A 种:
今天遇到一个难题,以前一直都是从 $%&转换到 ,今天需要 转换成
$%&的方法,找了一下 I 文档,没有发现有现成的函数可以用。后来上网搜索了
一下,方法还不少。如下几种:
方法一,使用强制转换。例如:
DD /
J%*+J% J% /
方法二,使用 。例如:
DD /
J%*+!$%1E@ 23/
"*5 /
需要说明的是,或可移值 0#4> 的" 的第二个参数是#!"&
0# 或 #& ,系统编译器将会自动对其进行转换。
方法三,使用 FF@>。例如:
"DD /
J%+E@> /
44在这里添加使用 的代码
9+0 &+"'()' /
K
剩余28页未读,继续阅读
zjl3866730
- 粉丝: 2
- 资源: 14
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- 基于Springboot的医院信管系统
- 基于Springboot的冬奥会科普平台
- 基于Springboot的社区医院管理服务系统
- 基于Springboot的实习管理系统
- TI-TCAN1146.pdf
- 基于Springboot的留守儿童爱心网站
- S32K3XXRM.pdf
- Ansible Automation Platform 快速安装指南 v3.8.1
- Ansible Tower 发行注记 v3.8.1-76页
- C语言笔记-考研版(进阶)
- Design_of_Analog_CMOS_Integrated_Circuit20200602-85440-9wt61m-with-cover-page-v2 (1).pdf
- Ansible Automation Platform 安装和参考指南 v3.8.1-59页
- 浅析5G技术在工业互联网领域的应用研究
- 查重17 岑彩谊-基于otn技术的本地承载网-二稿 .docx
- 自考计算机应用基础知识点.doc
- 数据库系统安全、技术操作规程.doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功