方法 |
描述 |
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);
内部使用的方法,虽然从声明上看到了这个函数,但是从源码里面没有看到实现和使用 |