C++ Builder 初学问与答(十六)

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;

  (未完待续)

你可能感兴趣的:(C++,c,C#,pascal,C++Builder)