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

原创 2004年05月11日 11:12:00

(版权要求:本文仅授权CSDN使用,另授权CCRUN转载,其他个人与网站不得转载、摘录,若有特别需求可与作者联系)

 

16C/C++语言在CB中的一些特定用法<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

2AnsiString是从Delphi中引进来的吗?

答:CB的核心组件VCL是用Object Pascal语言写出的,所以CBVCL组件的属性有很多都是使用long string,例如:Text NameCaption等属性都是使用Object Pascallong string。基于此关系,CB只好建立了和Object Pascallong string相应的类别,我们将它称为AnsiString

3AnsiStringString有什么区别?

答: C++ BuilderSysdefs.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中常用)

5AnstString成员函数与传统字符串函数有何不同之处?

答:我们可以通过二者的一个对照表来查看他们的之间的不同之处:

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格式,所以有时也难免要进行一些转换,我们可以通过下列三种方法来实现:

方法1AnsiString字符串转换成字符串数组:

先利用AnsiString类别中的c_str()方法转换成传统字符串数组,再用strcpy拷贝,将它拷贝到字符数组中去:

char s1[20];

strcpy(s1,Edit1->Text.c_str());

方法2AnsiString转换成传统字符串可以利用字符指针来实现:

可以通过字符指针来实现:

char *s;

s=Edit->Text.c_str();

方法3:利用字符指针实现传统字符串转换成AnsiString:

char *s=”试一试,看看能不能成功!”;

Edit->Text=s;

 

(未完待续)

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

16.C/C++语言在CB中的一些特定用法       2)AnsiString是从Delphi中引进来的吗?   答:CB的核心组件VCL是用Object Pascal语言写出的,所以CB...
  • chinahuyong
  • chinahuyong
  • 2009年04月03日 12:55
  • 898

C++ Builder初学问与答

一直以来都想写一点为BCB初学者快速入门的东西,前不久写了几篇《闲谈BCB》想把自己学习BCB中如何来解决难点的方法说给大家,没想到被骂得不成样子。本想不写了,但觉得这些东西留下来能做什么呢?还是用另...
  • wozengcong
  • wozengcong
  • 2014年01月04日 16:44
  • 1539

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

11.工具条组件  87)问:工具条是Windows编程经常要用的, C++Builder能不能实现这个功能呢? 答:当然可以,工具条是由许多具有图形的按钮组成的,这些按钮被分隔符分隔成许多组,每个组...
  • chinahuyong
  • chinahuyong
  • 2009年04月03日 12:53
  • 825

C++ Builder初学问与答1

一直以来都想写一点为BCB初学者快速入门的东西,前不久写了几篇《闲谈BCB》想把自己学习BCB中如何来解决难点的方法说给大家,没想到被骂得不成样子。本想不写了,但觉得这些东西留下来能做什么呢?还是用另...
  • cyp0207
  • cyp0207
  • 2007年11月28日 11:45
  • 309

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

10.菜单组件77)问:菜单是Windows常用的用户界面。对于一个能够实际应用的程序,菜单是必不可少的组成部分。C++Builder中是怎样实现菜单的? 答:C++Builder为我们提供了两种菜单...
  • ch_builder
  • ch_builder
  • 2003年08月25日 09:12
  • 1471

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

(版权要求:本文仅授权CSDN使用,另授权CCRUN转载,其他个人与网站不得转载、摘录,若有特别需求可与作者联系) (7)在C++Builder集成开发环境中,还有Component菜单。在组件菜单下...
  • ch_builder
  • ch_builder
  • 2004年03月04日 09:59
  • 2115

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

 “Attatch to Process”菜单项用来调试一个当前正在运行的进程。  “Parameters”菜单项用于指定应用程序运行时的初始参数。  “ReGISter ActiveX Server...
  • chinahuyong
  • chinahuyong
  • 2009年04月03日 12:54
  • 623

C++ Builder初学问与答3

3. 按钮类组件  21) 问: 在进行 Windows 程序界面设计中,经常会用到按钮,在 C++Builder 中,按钮一定是通过按钮组件来实现的吗? 答: 是的,并且 C++Builder 的按...
  • cyp0207
  • cyp0207
  • 2007年11月28日 11:47
  • 315

C++ Builder初学问与答(廿三)

 作者:董维春 网名:ch_builder(版权要求:请务必尊重知识产权,未经授权不要转载、摘录)19.数据库应用BDE篇36)问:如何用BDE组件联接数据库?答:BDE联接数据库方法非常简单,下面我...
  • ch_builder
  • ch_builder
  • 2008年06月09日 10:31
  • 2974

C++ Builder 初学问与答(二)

 2.文本输入组件11)问:如果要实现文本输入,在C++Builder中应该怎么办?  答:C++Builder常用文本输入组件来实现,常用的文本输入组件有Edit、MaskEdit 、Memo和Ri...
  • chinahuyong
  • chinahuyong
  • 2009年03月27日 11:24
  • 1150
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++ Builder 初学问与答(十六)
举报原因:
原因补充:

(最多只允许输入30个字)