主页C++ Builder 资料C++ Builder 参考手册System 字符串WideString
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 字母顺序排列的目录
网友留言/技术支持
WideString - BSTR 类型的封装,不是标准 C/C++ 的字符串类型的封装

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

方法 描述
public:  
WideString WideString();
WideString(const char* src);
WideString(const WideString &src);
WideString(const WideChar *src, int len);
WideString(const char *src, int len);
WideString(const WideChar *src);
WideString(const char16_t *src, int numChar16 = -1);
WideString(const char32_t *src, int numChar32 = -1);
explicit WideString(const WideChar src);
explicit WideString(char src);
explicit WideString(short src);
explicit WideString(unsigned short);
explicit WideString(int src);
explicit WideString(unsigned int);
explicit WideString(long);
explicit WideString(unsigned long);
explicit WideString(__int64);
explicit WideString(unsigned __int64);
explicit WideString(float src);
explicit WideString(double src);
explicit WideString(long double src);
WideString(const UnicodeString &src);
template <unsigned short codePage> WideString(const AnsiStringT<codePage> &src);
~WideString ~WideString();
operator = WideString &operator =(const WideString &rhs);
WideString &operator =(BSTR rhs);
赋值操作符,会把字符串复制到当前字符串 *this,并且返回当前字符串的引用 *this。【
operator += WideString &operator +=(const WideString &rhs);
+= 操作符
operator == bool operator ==(const WideString &rhs) const;
bool operator ==(const BSTR w) const;
bool operator ==(const char *s) const { return operator ==(WideString(s)); }
相等操作符
operator != bool operator !=(const WideString &rhs) const;
bool operator !=(const BSTR w) const;
bool operator !=(const char *s) const { return operator !=(WideString(s)); }
不等操作符
operator < bool operator < (const WideString &rhs) const;
bool operator < (const BSTR w) const;
bool operator < (const char *s) const { return operator < (WideString(s)); }
小于操作符
operator > bool operator > (const WideString &rhs) const;
bool operator > (const BSTR w) const;
bool operator > (const char *s) const { return operator > (WideString(s)); }
大于操作符
operator <= bool operator <=(const WideString &rhs) const;
bool operator <=(const BSTR w) const;
bool operator <=(const char *s) const { return operator <= (WideString(s)); }
小于等于操作符
operator >= bool operator >=(const WideString &rhs) const;
bool operator >=(const BSTR w) const;
bool operator >=(const char *s) const { return operator >= (WideString(s)); }
大于等于操作符
operator + WideString operator +(const WideString &rhs) const;
相加操作符
operator [] WideChar & operator [](const int idx) { return Data[idx-1]; }
const WideChar & operator [](const int idx) const { return Data[idx-1]; }
[] 操作符,访问字符串里面的第 idx 个字符 (读写)
c_bstr WideChar *c_bstr() const { return Data; }
返回 BSTR 类型的字符串,虽然看似 wchar_t * 实际上是 BSTR 类型。
data WideChar *data() { return Data; }
返回内部数据,虽然看似 wchar_t * 实际上是 BSTR 类型。
operator BSTR() operator BSTR() const { return Data; }
类型转换操作符,转为 BSTR 类型。
operator & BSTR *operator &() { return &Data; }
取地址操作符,转为 BSTR * 类型。例如:BSTR *p = &ws;
Attach void Attach(BSTR src);
接管 src,如果不需要这个数据了会自动使用 SysFreeString 释放占用的资源。
Detach BSTR Detach();
放弃管理自身的 BSTR 数据,即 Data 数据成员,Data 赋值为 NULL,返回值为原来的 Data,让别人来接管。
Empty void Empty();
释放字符串占用的资源,使用 SysFreeString,字符串清空。
Copy static wchar_t* Copy(wchar_t* src);
wchar_t* Copy() const { return Copy(Data); }
wchar_t* Copy(wchar_t *, int len) const;
返回复制的字符串 BSTR 类型的,不需要的时候需要用 SysFreeString 销毁来释放资源,或者让其他的 WideString 来接管
Length int Length() const;
返回字符串长度。
IsEmpty bool IsEmpty() const;
返回字符串是否为空,true: 空,false: 非空。
Insert void Insert(const WideString &str, int index);
在字符串的第 index 字符的位置插入 str 字符串。
Delete void Delete(int index, int count);
删除字符串的第 index 字符开始的 count 个字符。
SetLength void SetLength(int newLength);
修改字符串长度为 newLength,重新分配字符串的内存,如果内存不足会抛出 EOutOfMemory 异常,
字符串原来的内容会保留,长度改短会丢弃多余部分,长度改长会新增随机字符。
Pos int Pos(const WideString &subStr) const;
寻找 subStr 在当前字符串的位置,第一个字符位置是 1,如果找不到返回值为 0。
LowerCase WideString LowerCase() const;
把字符串转为小写,函数返回新的字符串,原来的字符串并没有改变,例如:
s = L"ABCΩΠĀÁǍÀ";
s = s.LowerCase();
得到是字符串为 L"abcωπāáǎà"
UpperCase WideString UpperCase() const;
把字符串转为大写,函数返回新的字符串,原来的字符串并没有改变,例如:
s = L"abcωπāáǎà";
s = s.UpperCase();
得到是字符串为 L"ABCΩΠĀÁǍÀ";
Trim WideString Trim() const;
把字符串开头和末尾的空格与控制符删掉,返回新的字符串,原来的字符串并没有改变。【例:删除首尾空格
TrimLeft WideString TrimLeft() const;
把字符串开头的空格与控制符删掉,返回新的字符串,原来的字符串并没有改变。【例:删除首尾空格
TrimRight WideString TrimRight() const;
把字符串末尾的空格与控制符删掉,返回新的字符串,原来的字符串并没有改变。【例:删除首尾空格
SubString WideString SubString(int index, int count) const;
返回字符串当中从第 index 个字符开始的 count 个字符的字符串。【例:截取字符串的一部分
ToInt int ToInt() const;
把字符串转为整数,如果转换失败,会抛出 EConvertError 异常。
ToIntDef int ToIntDef(int defaultValue) const;
把字符串转为整数,如果转换失败,返回 defaultValue 而不会抛出异常。
ToDouble double ToDouble() const;
把字符串转为浮点数,如果转换失败,抛出 EConvertError 异常。
支持把科学计数法 (L"-123.45e+67" 这样的格式) 转为浮点数,不支持 +INF, -INF 和 NAN。
更多的浮点数转换,请参考 “字符串和浮点数之间的转换
IsDelimiter bool IsDelimiter(const WideString &delimiters, int index) const;
返回字符串里面的第 index 个字符,是否也存在于字符串 delimiters 里面。例如:
s = L"abcdefghijklmn";
s.IsDelimiter(L"aeiou",1) 为 true,因为 s 的第 1 个字符 L'a' 是在字符串 L"aeiou" 里面的字符
s.IsDelimiter(L"aeiou",2) 为 false,因为 s 的第 2 个字符 L'b' 不在字符串 L"aeiou" 里面
s.IsDelimiter(L"aeiou",5) 为 true,因为 s 的第 5 个字符 L'e' 是在字符串 L"aeiou" 里面的字符
IsPathDelimiter bool IsPathDelimiter(int index) const;
字符串里面的第 index 个字符,是否为文件路径的分割符。
Windows 的路径分割符为 L'\\' 而其他系统的分割符为 L'/'
LastDelimiter int LastDelimiter(const WideString& delimiters) const;
返回字符串里面最后一个字符是否存在于字符串 delimiters 里面。
请参考 IsDelimiter 方法。
StringOfChar static WideString StringOfChar(WideChar ch, int count);
生成 count 个字符 ch 的字符串。
例:s = WideString::StringOfChar(L'呵',5); 得到的字符串是 L"呵呵呵呵呵"
Format static WideString Format(const WideString &format, const TVarRec *args, int size);
实现 Delphi 样式的 Format 函数,例如:
int i = 5; double f = 1.356;
s = WideString::Format(L"i=%d, f=%.2f", ARRAYOFCONST((i,f)));
得到的字符串 s:L"i=5, f=1.36"
sprintf WideString &__cdecl sprintf(const wchar_t* format, ...);
把 printf 的格式输出结果输出到当前的字符串 this 里面,返回字符串引用 *this
例:s.sprintf(L"i=%d, f=%.2f", i, f);
printf int __cdecl printf(const wchar_t* format, ...);
把 printf 的格式输出结果输出到当前的字符串 this 里面,返回字符串长度。
例:s.printf(L"i=%d, f=%.2f", i, f);
vprintf int __cdecl vprintf(const wchar_t* format, va_list);
把 vprintf 的格式输出结果输出到当前的字符串 this 里面,返回字符串长度。
例:格式化输出到字符串
cat_sprintf WideString& __cdecl cat_sprintf(const wchar_t* format, ...);
保留字符串原来的内容,把 sprintf 的格式输出结果添加在字符串的后面,返回字符串 *this 引用。
例:格式化输出到字符串
cat_printf int __cdecl cat_printf(const wchar_t* format, ...);
保留字符串原来的内容,把 printf 的格式输出结果添加在字符串的后面,返回字符串新增部分的长度。
例:格式化输出到字符串
cat_vprintf int __cdecl cat_vprintf(const wchar_t* format, va_list); // Returns formatted length
保留字符串原来的内容,把 vprintf 的格式输出结果添加在字符串的后面,返回字符串新增部分的长度。
例:格式化输出到字符串
FormatFloat static WideString FormatFloat(const WideString& format, const long double& value);
返回浮点数 value 按照规定的格式 format 生成的字符串。例:
f = 12345678.9876;
s = WideString::FormatFloat(L"#,##0.00", f);
得到的字符串 s 为 L"12,345,678.99"
FloatToStrF static WideString FloatToStrF(long double value, TStringFloatFormat format, int precision, int digits);
返回浮点数 value 按照规定的格式 format 及精度 precision, digits 生成的字符串。
格式 TStringFloatFormat 请参考 WideString 的 TStringFloatFormat 类型成员。
IntToHex static WideString IntToHex(int value, int digits);
把整数转为 16 进制字符串,生成的字符串至少 digits 位,不足前面补 0。
例如:i = 1234; s = WideString::IntToHex(i,4); 得到的字符串为 L"04D2" 不足 4 位前面补 0
i = 1234567890; s = WideString::IntToHex(i,4); 得到的字符串为 L"499602D2" 超过 4 位直接输出
CurrToStr static WideString CurrToStr(Currency value);
金额值转字符串。
CurrToStrF static WideString CurrToStrF(Currency value, TStringFloatFormat format, int digits);
把金额值 value 按照 format 格式转为字符串,精度为 digits。
格式 TStringFloatFormat 请参考 WideString 的 TStringFloatFormat 类型成员。
FirstChar const WideChar* FirstChar() const;
WideChar* FirstChar();
返回字符串里面第一个字符的指针。请参考 begin 方法。
LastChar const WideChar* LastChar() const;
WideChar* LastChar();
返回字符串里面最后一个字符的指针。请参考 end 方法。
begin iterator begin() { return FirstChar(); }
const_iterator begin() const { return cbegin(); }
返回字符串里面第一个字符的指针,例如:
for(WideString::iterator it=s.begin(); it<s.end(); it++)
{
  wchar_t c = *it;
  Memo1->Lines->Add(c);
}
end iterator end() { WideChar* chr = LastChar(); return chr ? chr + 1 : 0; }
const_iterator end() const { return cend(); }
返回字符串里面最后一个字符的指针,例如:
for(WideString::iterator it=s.begin(); it<s.end(); it++)
{
  wchar_t c = *it;
  Memo1->Lines->Add(c);
}
cbegin const_iterator cbegin() const { return FirstChar(); }
返回字符串里面第一个字符的指针。请参考 begin 方法。
cend const_iterator cend() const { const WideChar* chr = LastChar(); return chr ? chr + 1 : 0; }
返回字符串里面最后一个字符的指针。请参考 end 方法。
swap WideString &swap(WideString &other);
把字符串的内容和 other 字符串进行交换。
这个方法是通过数据指针交换来实现的,而不是拷贝数据,所以速度非常快,适合在排序等操作中交换字符串。
private:  
InitStr void InitStr(const WideChar *, int);
内部使用的方法,虽然从声明上看到了这个函数,但是从源码里面没有看到实现和使用

 

全局操作符:

全局操作符 描述
System: 在 System 命名空间里面
operator == bool operator ==(const BSTR w, const WideString& rhs);
BSTR 类型和 WideString 之间比较:相等
operator != bool operator !=(const BSTR w, const WideString& rhs);
BSTR 类型和 WideString 之间比较:不等
operator < bool operator < (const BSTR w, const WideString& rhs);
BSTR 类型和 WideString 之间比较:小于
operator > bool operator > (const BSTR w, const WideString& rhs);
BSTR 类型和 WideString 之间比较:大于
operator <= bool operator <=(const BSTR w, const WideString& rhs);
BSTR 类型和 WideString 之间比较:小于等于
operator >= bool operator >=(const BSTR w, const WideString& rhs);
BSTR 类型和 WideString 之间比较:大于等于

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

下一页:类型

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