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;

  (未完待续)


本文转自yonghu86 51CTO博客,原文链接:http://blog.51cto.com/yonghu/1321409,如需转载请自行联系原作者

相关文章
|
C++ Windows
C++ Builder 初学问与答(一)
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chinahuyong/article/details/4029069 一直以来都想写一点为BCB初学者快速入门的东西,前不久写了几篇《闲谈BCB》想把自己学习BCB中如何来解决难点的方法说给大家,没想到被骂得不成样子。
820 0
|
C++
C++ Builder 初学问与答(二)
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chinahuyong/article/details/4029074   2.文本输入组件11)问:如果要实现文本输入,在C++Builder中应该怎么办?  答:C++Builder常用文本输入组件来实现,常用的文本输入组件有Edit、MaskEdit 、Memo和RichEdit。
881 0
|
C++ 容器 数据格式
C++ Builder 初学问与答(三)
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chinahuyong/article/details/4046142 3. 按钮类组件    21)问:在进行Windows程序界面设计中,经常会用到按钮,在C++Builder中,按钮一定是通过按钮组件来实现的吗?  答:是的,并且C++Builder的按钮类组件十分丰富。
935 0
|
C++
C++ Builder 初学问与答(五)
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chinahuyong/article/details/4046147   38)问:事件OnChange和OnScorll都可以描述滚动条的滚动事件,他们有什么区别吗? 答:事件OnChange和OnScorll是有区别的。
680 0
|
C++ 容器
C++ Builder 初学问与答(四)
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chinahuyong/article/details/4046144   4.
799 0
|
C++
C++ Builder 初学问与答(七)
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chinahuyong/article/details/4046150   53)问:能介绍一下TTreeNodes与TTreeNode?  答:在BCB中,树状视图的节点是通过TTreeNodes对象来管理的,通过这个对象可以对树状视图进行动态的增加、删除、插入、移动节点等操作。
802 0
|
C++ 索引 Windows
C++ Builder 初学问与答(六)
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chinahuyong/article/details/4046149  6.图形列表组件TreeView  45)问:有时侯,我希望实现类似资源管理器对文件夹管理的显示方式,和对文件的管理显示方式,在C++Builder中应该怎么办?  答:在C++Builder中可以直接使用图形列表组件来实现,它包括TreeView、ListView以及Outline组件。
696 0
|
C++ Windows
C++ Builder 初学问与答 (十)
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chinahuyong/article/details/4046156   10.菜单组件  77)问:菜单是Windows常用的用户界面。
789 0
|
C++ 索引 容器
C++ Builder 初学问与答 (九)
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chinahuyong/article/details/4046154 9.多页组件  68)问:我觉得C++Builder的组件模板的管理方式很好,在这个模板中通过单击页就可以在各个页之间进行切换,在C++Builder中我应该怎样来实现呢?  答:我们可以用多页组件来实现,它的好处就是可以在有限的空间中尽量多地存放信息,而且便于把信息分类。
829 0
|
前端开发 C++ 区块链
C++ Builder 初学问与答(八)
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chinahuyong/article/details/4046152   8.图形类组件  59)问:Windows是一个图形系统,C++Builder是怎样处理图形的呢?  答:C++Builder通过提供图形组件来处理图形,其中比较常用的有图像组件(Image)、几何图形组件(Shape)和画板组件(PaintBox)。
835 0