主页C++ Builder 资料C++ Builder 参考手册System 字符串UnicodeString
C++ Builder 串口控件
C++ Builder 编程技巧
C++ Builder 操作指南
C++ Builder 参考手册
基础知识
cfloat 浮点数
cmath 数学函数
cstdlib 标准库函数
System 字符串
 • UnicodeString
   · 方法
   · 类型
   · 数据
 • UTF8String
 • TStringList
 • TStrings
 • String
 • AnsiString
 • AnsiStringBase
 • AnsiStringT
 • RawByteString
 • UCS4String
 • WideString
 • EnumToStr
 • FloatToStr
 • FloatToStrF
 • FormatFloat
 • IntToStr
 • UIntToStr
 • IntToHex
 • StrToEnum
 • StrToFloat
 • StrToFloatDef
 • StrToInt
 • StrToIntDef
 • StrToInt64
 • StrToInt64Def
 • StrToUInt64
 • StrToUInt64Def
 • TFloatFormat
 • GetUnicodeCategory
 • IMLangCodePages
 • StringReplace
System 日期和时间
System.Math.hpp 数学函数
其他数据类型
VCL 基础类
VCL 应用程序
Pictures 图片
Graphics 绘图
Additional 控件
System 控件
A ~ Z 字母顺序排列的目录
网友留言/技术支持
UnicodeString - 编码为 UTF-16 的字符串,C++ Builder 里面最常用的字符串类型

属性方法事件类型数据返回 UnicodeString 类

类型成员 类型描述
public:  
TStringFloatFormat enum TStringFloatFormat { sffGeneral, sffExponent, sffFixed, sffNumber, sffCurrency };
这个枚举类型提供给 FloatToStrF 和 CurrToStrF 方法使用。
sffGeneral 常用的格式。使用定点数或科学计数法,尽可能的生成更短的字符串,去掉小数末尾的 0,仅在必须有的时候才包含小数点。
小数点左面的位数,小于等于要求的精度位数,并且大于 0.00001 的数,会使用定点数方式输出,否则会使用科学计数法。
sffExponent 科学计数法。转换之后的字符串的格式为 "-d.dddE+dddd"
如果是负数,开始字符为减号 “-”,小数点的前面始终有 1 位数,总位数为参数给定的位数。
字符 “E” 的后面始终跟着加号 “+” 或减号 “-”,最后是指数。
sffFixed 定点数。转换之后的字符串的格式为 "-ddd.ddd"
如果是负数,开始字符为减号 “-”,小数点的前面至少有 1 位。
小数点之后的位数为转换函数的参数 digits 给定的值,必须在 0 ~ 18 之间。
如果小数点前面的位数超出了参数给定的精度位数 (超出定点数可以表达的能力),会使用科学计数法。
sffNumber 带千位分隔符的定点数。转换之后的格式为 "-d,ddd,ddd.ddd"
规则与 sffFixed 相同,并且在这个基础上,增加千位分隔符。
sffCurrency 货币格式,用于表示金额值。
格式受 CurrencyString, CurrencyFormat, NegCurrFormat, ThousandSeparator, DecimalSeparator 这几个全局变量的控制,默认的,这些全局变量初始化为 Windows 控制面板里面的地区选项里面的货币格式。小数点后面的位数由转换函数的参数 digits 参数给定,范围在 0 ~ 18 之间。
TStringLeadCharType enum TStringLeadCharType { ctNotLeadChar, ctbLeadSurrogate, ctTrailSurrogate };
这个枚举类型提供给 ByteType 方法使用。更多说明请参考 “字节类型
ctNotLeadChar 这是单个 char16_t 字符,不是 UTF-16 编码的代理对 (surrogate pair) 字符。
ctbLeadSurrogate 这是 UTF-16 编码的代理对当中的前导代理 (lead surrogate)
ctTrailSurrogate 这是 UTF-16 编码的代理对当中的后尾代理 (trail surrogate)
iterator typedef WideChar * iterator;
提供给 begin, end 方法使用。
const_iterator typedef const WideChar * const_iterator;
提供给 begin, end, cbegin, cend 方法使用。
protected:  
StrRec #pragma pack(push,1)
struct StrRec
{
#ifdef _WIN64
  int _Padding;
#endif /* _WIN64 */
  unsigned short codePage;
  unsigned short elemSize;
  int refCnt;
  int length;
};
#pragma pack(pop)
字符串信息结构体类型,提供给 GetRec, ElementSize, RefCount, 和 CodePage 方法使用。
codePage 字符串的代码页,UTF-16 的代码页是 1200
elemSize 每个元素的字节数,对应 UTF-16 编码,是 2 个字节
refCnt 引用计数
length 字符串长度,和 s.Length() 相等
在 Data 数据成员指针指向的数据之前的 sizeof(StrRec) 个字节的内容,就是 StrRec 结构体;
就是说,Data 指针并没有指向内存的首地址,而是指向的字符串的第一个字符,
内存的开始部分是 StrRec 结构体,接下来是第一个字符、第二个字符……、字符串结束符。
这个结构体的位置,用程序代码说明,就是:
StrRec &rec = ((StrRec*)s.data())[-1];
如果这段代码还不够清晰,再用另一段同样效果的代码说明一下这个结构体的位置:
char *pStrData = (char *)s.data() - sizeof(StrRec); // 就在 s.data() 之前的 sizeof(StrRec) 个字节
StrRec &rec = *(StrRec *)pStrData; // 这个地址里面的内容引用出来,就是 StrRec 结构体
例:赋值、数据指针、引用计数的测试

属性方法事件类型数据返回 UnicodeString 类

◤上一页:方法下一页:数据

C++ 爱好者 -- Victor Chen 的个人网站 www.cppfans.com 辽ICP备11016859号