admin 管理员组

文章数量: 887021


2024年2月19日发(作者:登录界面怎设计的好看)

浅谈AnsiString

在Borland C++ Builder 6(以下简称BCB)中,最常用的长字符串类型即是AnsiString型。VCL组件中任何需要用到字符串变量的地方,都是使用AnsiString型字符串。BCB整个工具最大的优势在于其丰富的VCL组件,使可视化开发便捷可行,因此足见AnsiString类型对于熟练掌握、高效运用BCB的重要性。

相比传统的C/C++的char型数组实现字符串的方法,AnsiString类型提供了丰富的对象方法,使访问、操作和使用字符串更加方便高效,即使相比标准库中的std::string仍然毫不逊色。可以说,AnsiString是BCB及Delphi中一颗璀璨的明珠。AnsiString仍然采用了C/C++中字符串的结构,以’0’(NULL)结尾,值得一提的是其在实际字符串前面增加了一些字节的head。AnsiString索引值基于1,而非0。

AnsiString提供的一系列操作符如下:

1. 赋值:=

2. 连接:+、+=

3. 比较:==、>、<、>=、<=、!=

4. 访问:[](下标访问)

AnsiString常用方法如下:

1. AnsiCompare

声明:int __fastcall AnsiCompare(const AnsiString &rhs) const;

说明:该方法按照字典顺序、区分大小写的方法比较AnsiString和rhs,若S1 > S2返回 大于0,相等返回0,S1 < S2则返回小于0。

2. AnsiCompareIC

声明及说明同上,唯一的区别在于不区分大小写。

3. AnsiLastChar

声明:char * __fastcall AnsiLatChar() const;

说明:该方法返回AnsiString中最后字符的指针,可通过它来访问最后一个字符。支持 多字节字符。

4. AnsiPos

声明:int __fastcall AnsiPos(const AnsiString &subStr) const;

说明:该方法返回AnsiString中子串subString的索引,索引基于1。若无该子串,则返 回0。支持多字节字符串。

5. c_str

声明:char * __fastcall c_str() const;

说明:该方法返回一个包含与AnsiString相同字符的零终止的字符数组的指针(在需要C 风格字符串的地方常用),若未分配AnsiString则返回空字符串。该方法主要用于 读取AnsiString的值(const成员函数),若要修改使用[]操作或Insert/Delete等方法。

6. data

声明:const void * __fastcall data() const;

说明:同上,区别在于值为空时返回空指针。

7. Delete

声明:AnsiString & __fastcall Delete(int index, int count);

说明:该方法从AnsiString中删除从index位置开始的count个字符并返回该字符串。

若index无效(大于AnsiString长度/小于1)或count≤0则不删除字符,若count指

定的字符多于从index开始的字符,则删除其余的字符。

8. FloatToStrF

该方法用来控制浮点值的字符串表示法,如几位小数、科学计数法等,具体请参见Help。

9. FormatFloat

声明:static AnsiString __fastcall FormatFloat(const AnsiString &format, const long double

&value);

说明:该方法用format给出的格式化字符串格式化value给出的值,具体请参见Help。

10. Insert

声明:AnsiString & __fastcall Insert(const AnsiString &str, int index);

说明:该方法在index位置上插入str字符串并返回修改后的结果。如index < 1则映射

为1,如超过字符串长度,则映射为Length();如str为空则不执行操作,如不能

分配足够内存,则抛出EOutOfMemory异常。

11. IntToHex

声明:static AnsiString __fastcall IntToHex(int value, int digits);

说明:该方法将数字转化为16进制表示的字符串,value表示要转换的数字,digits表

示16进制数的最小数。注意此方法为static,不依赖于AnsiString对象实现,即

可以直接使用此方法如:ShowMessage(IntToHex(19, 1))返回13。

12. IsEmpty

声明:bool __fastcall IsEmpty() const;

说明:若AnsiString为空则返回true,否则返回false。亦可用其与EmptyStr比较,或

测其长度Length() == 0;

13. Length

声明:int __fastcall Length() const;

说明:返回AnsiString中字节数。

14. LowerCase

声明:AnsiString __fastcall LowerCase() const;

说明:返回转换成小写后的AnsiString。

15. operator !=

声明:bool __fastcall operator !=(const AnsiString& rhs) const;

说明:比较两字符串是否相等,不相等返回true,否则返回false。

16. operator []

声明:char& __fastcall operator [](const int index);

说明:返回字符串中索引index上的字符,索引基于1,可通过此修改该字符。若index 无效,则抛出OutOfRange异常。

17. operator +

声明:friend AnsiString __fastcall operator +(const char *lhs, const AnsiString& rhs);

说明:该方法返回连接lhs和rhs后的AnsiStirng。

18. operator +=

声明:AnsiStirng& __fastcall operator +=(const AnsiString& rhs);

说明:连接AnsiString与rhs并返回新字符串。

19. operator <

声明:bool __fastcall operator <(const AnsiString& rhs) const;

说明:若AnsiString小于rhs,返回true,否则返回false,依照字典顺序。

20. operator <=

声明:bool __fastcall operator <=(const AnsiString& rhs) const;

说明:同上

21. operator =

声明:AnsiString __fastcall operator =(const AnsiString& rhs);

说明:赋值操作,将字符串rhs分配到AnsiString中。

22. operator ==

声明:bool __fastcall operator ==(const AnsiString& rhs) const;

说明:比较两字符串是否相等,相等返回true,否则返回false。

23. operator >

声明:bool __fastcall operator >(const AnsiString& rhs) const;

说明:同operator <说明。

24. operator >=

声明:bool __fastcall operator >=(const AnsiString& rhs) const;

说明:同上说明。

25. Pos

声明及说明同AnsiPos,不支持多字节字符。

26. UpperCase

声明:AnsiString __fastcall UpperCase() const;

说明:返回转换成大写后的AnsiString。

在使用AnsiString类的各种方法(成员函数)时,应注意函数是否为const、static等,这些关键字决定了是否可通过该函数修改AnsiString值、是否依赖于具体AnsiString对象调用等等,通过对AnsiString成员函数的调用,可加深对类的成员函数的理解。


本文标签: 字符串 返回 方法 说明 字符