AnsiString和String的区别、使用
来源:互联网 发布:淘宝手机店招图片素材 编辑:程序博客网 时间:2024/05/22 06:21
16.C/C++语言在CB中的一些特定用法
2)AnsiString是从Delphi中引进来的吗?
答:CB的核心组件VCL是用Object Pascal语言写出的,所以CB的VCL组件的属性有很多都是使用long string,例如:Text、 Name、Caption等属性都是使用Object Pascal的long string。基于此关系,CB只好建立了和Object Pascal的long string相应的类别,我们将它称为AnsiString。
3)AnsiString与String有什么区别?
答: C++ Builder在Sysdefs.h头文件中有这样的定义:
typedef AnsiString String;
从这一点在看他二者是完全一样的,只是书写起来后者更方便一些,前者是意图更明了一些。
4)能介绍一下AnsiString类的一些常见函数及其用法吗?
答:当然可以了,下面就常见函数做一下简单介绍:
成员函数 语法 功能
c_str char *_fastcall c_str() const 返回字符串数据的指针
Delete void _fastcall Delete(int index,int count) 由index处开始删除count个字符
Insert void _fastcall Insert(const AnsiString& str,int index) 由index处开始插入字符str到原字符串中
IsEmpty bool _fastcall IsEmpty() const 返回字符串是否为空,true表示空字符串
Length int _fastcall Length() const 返回字符串长度
LowerCase AnsiString _fastcall LowerCase() const 将字符串中的大写字母改写成小写
UpperCase AnsiString _fastcall UpperCase() const 将字符串中的小写字母改写成大写
Pos int _fastcall Pos(cont AnsiString& substr)const; 找出子字符串在原字符串中由第几个位置开始
SubString AnsiString _fastcall SubString(int index,int count)const 返回由index处向后取count个字符
ToDouble double _fastcall ToDouble() const 将字符转成双精度数值
ToInt int _fastcall ToInt() const 将字符转成整形
IntToStr AnsiString _fastcall IntToStr(int Value) 将整形转成字符串
Trim AnstString _fastcall Trim() const返回一个新的字符串,它会将原字符串前后空白或控制字符清除后再返回
WideChar wchar_t fastcall WideChar(wchart* dest,int destsize)const 转换AnsiString到一个宽字符数组(COM中常用)
5)AnstString成员函数与传统字符串函数有何不同之处?
答:我们可以通过二者的一个对照表来查看他们的之间的不同之处:
AnsiString成员函数 功能 传统字符串函数
= 字符串拷贝 strcpy
+= 字符串合并 strcat
+ 字符串连接 无
==,!+=,<,<=,>,>= 字符串比较 strcmp
c_str() 相互转换 无,但可以利用指针实现
Delete 删除子字符串 无
Insert 插入子字符串 无
Length 求字符串长度 strlen
LowerCase 字母转成小写 strlwr
Pos 找出子字符串 strstr
SetLength 设置字符串长度 无
ToInt 转成整形 无
ToDouble 转成双精度 sprintf
UpperCase 字母转成大写 strupr
6)如何实现传统字符串与AnsiString字符串的相互转换?
答:传统的C语言是使用字符来组成字符串的(字符串末尾必须有’/0’做为结束标志),其格式和AnsiString并不相同。由于在CB中我大量使用AnsiString格式,所以有时也难免要进行一些转换,我们可以通过下列三种方法来实现:
方法1:AnsiString字符串转换成字符串数组:
先利用AnsiString类别中的c_str()方法转换成传统字符串数组,再用strcpy拷贝,将它拷贝到字符数组中去:
char s1[20];
strcpy(s1,Edit1->Text.c_str());
方法2:AnsiString转换成传统字符串可以利用字符指针来实现:
可以通过字符指针来实现:
char *s;
s=Edit->Text.c_str();
方法3:利用字符指针实现传统字符串转换成AnsiString:
char *s=”试一试,看看能不能成功!”;
Edit->Text=s;
- AnsiString和String的区别、使用
- AnsiString和String的区别、使用
- AnsiString和String的区别、使用
- AnsiString和String的区别、使用
- AnsiString 和string 的区别
- AnsiString和UnicodeString的区别
- 关于AnsiString的使用大全
- String和StringBuilder的区别和使用
- String 和 StringBuilder 的区别和使用
- Ansistring的类型转换与使用
- 混用AnsiString和c_str()的安全问题
- 使用StringBuilder, StringBuilder和String的区别
- 使用StringBuilder, StringBuilder和String的区别
- 使用StringBuilder, StringBuilder和String的区别
- 使用StringBuilder, StringBuilder和String的区别
- String、StringBuffer、StringBuilder的区别和使用
- delphi xe2 string、AnsiString及Tbytes之间的转换
- delphi2010 string、ansistring及Tbytes之间的转换
- 数据存储与访问之文件的存储和访问
- Android开发(7)--Android中的SAX解析XML文件
- java连接oracle数据库(亚信联创实习)
- 161---linux实验二
- uploadify批量上传文件
- AnsiString和String的区别、使用
- linux乱码问题:LANG变量的秘诀
- String path = request.getContextPath路径问题
- 最火的Android开源项目(4
- C#中类、抽象类、接口的比较
- CentOS 6.3/6.4 Minimal 源码安装 MySQL 5.6.10/5.6.11
- codeforces 7B - Memory Manager
- InstaSearch - Eclipse plug-in for quick code search
- SVN Checkout 工程时未弹出要输入用户名密码,但被forbidden的情况