AnsiString和String的区别、使用
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的区别、使用的更多相关文章
- BCB:AnsiString和String的区别
AnsiString和String的区别.使用 本文转自:http://www.bianceng.cn/c/index.htm 16.C/C++语言在CB中的一些特定用法 2)AnsiString是从 ...
- python中string.casefold和string.lower区别
string.casefold和string.lower 区别 python 3.3 引入了string.casefold 方法,其效果和 string.lower 非常类似,都可以把字符串变成小写, ...
- C字符串和C++中string的区别 &&&&C++中int型与string型互相转换
在C++中则把字符串封装成了一种数据类型string,可以直接声明变量并进行赋值等字符串操作.以下是C字符串和C++中string的区别: C字符串 string对象(C++) 所需的头文件名称 ...
- java基础知识回顾之---java StringBuffer,Stringbuilder与String的区别
public class StringBuilderTest { /** * StringBuffer和Stringbuilder :使用与内容可以被修改的字符串 * 与String的区别:Strin ...
- C字符串和C++中string的区别 &&&&C++中int型与string型互相转换
在C++中则把字符串封装成了一种数据类型string,可以直接声明变量并进行赋值等字符串操作.以下是C字符串和C++中string的区别: C字符串 string对象(C++) 所需的头文件名称 ...
- JAVA中String = null 与 String = "" 的区别
JAVA中String = null 与 String = ""的区别 笔者今天在Debug的时候发现的NPE(NullPointerException),辛辛苦苦地调试了半天,终 ...
- C# string 与 String的区别
C# string 与 String的区别 The string type represents a string of Unicode characters. string is an alias ...
- python2/3中 将base64数据写成图片,并将图片数据转为16进制数据的方法、bytes/string的区别
1.python2将base64数据写成图片,并将数据转为16进制字符串的方法 import binascii img = u'R0lGODlhagAeAIcAAAAAAAAARAAAiAAAzABE ...
- Java char 和 String 的区别: 字符编码及其存储
一. ASCII码 上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定.这被称为ASCII码,一直沿用至今.一个字节(8bit)一共 可以用来表示256种不同的状态 ...
随机推荐
- javascript实现jsp页面的打印预览
1.加载WebBrowser打印预览控件 <OBJECT classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2" heigh ...
- java多线程sleep和wait方法的区别
分别创建了三个类,一个测试类,两个线程类实现Runnable接口. 当有notify()唤醒线程时,执行的结果如下: 当把TestSleepaWait.class.notify();语句注释后,即没有 ...
- Keil报错failed to execute 'd:\Keil\C51\BIN\C51.EXE'
关于老师发的keil软件报错如下: --- Error: failed to execute 'd:\Keil\C51\BIN\C51.EXE' 错误是因为老师直接拷贝的安装目录,里面的文件路径设置仍 ...
- hashlib使用时出现: Unicode-objects must be encoded before hashing
# hashlib.md5(data)函数中,data参数的类型应该是bytes# hash前必须把数据转换成bytes类型>>> from hashlib import md5 F ...
- Docker 入门实践
欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 作者:张戈 导语 本文从新手视角记录了一个实际的Dokcer应用场景从创建.上传直到部署的详细过程,并简单的介绍了腾讯云容器服务的使用方法 ...
- Java 反射之动态代理
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt205 利用Java反射机制你可以在运行期动态的创建接口的实现.java.la ...
- RSA算法介绍
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt279 2.1.1 算法实现 首先, 找出三个数, p, q, r,其 ...
- Java线程:线程栈模型
要理解线程调度的原理,以及线程执行过程,必须理解线程栈模型. 线程栈是指某时刻时内存中线程调度的栈信息,当前调用的方法总是位于栈顶.线程栈的内容是随着程序的运行动态变化的,因此研究线程栈必须选择一个运 ...
- java伪代码《大道至简》
阅读<大道至简>第一章,深感作者对编程问题的精炼定义,通过对古老寓言故事<愚公移山>的引用,说明了编程的本质,即顺序,分支,循环.其中又将他们扮演的项目组织者,团队经理,编程人 ...
- 团队作业4——第一次项目冲刺(Alpha版本) Day3
1.由于大家课程都比较多,时间紧迫,今天最后一节课下课完在教室召开了简短的站立式会议,会议照片如下: 2.Leangoo任务分解图: 3.每个人的工作: 队员 今天已完成的工作 明天计划完成的工作 林 ...