class cipstdAPI xstring : private xstring_c
{
...
xstring_c getxstring_c () const;
inline xstring_c getxstring_c_unattached () const;
...
inline xstring operator+ (const xstring &str1, cStringT str2);
inline xstring operator+ (const xstring &str1, cWStringT str2);
inline xstring operator+ (cStringT str1, const xstring &str2);
inline xstring operator+ (cWStringT str1, const xstring &str2);
inline xstring operator+ (const xstring &str1, const xstring &str2);
...
}
//继承自__xstring_c结构,
__xstring_c 内有对应宽字节wcstr和窄字节的mbstr的2个成员
typedef struct __xstring_c
{
void *buffer;
StringT mbstr;
WStringT wcstr;
} xstring_c;
typedef char CharT;
typedef char *StringT;
typedef const char *cStringT;
typedef wchar_t WCharT;
typedef WCharT *WStringT;
typedef const WCharT *cWStringT;
xstring转基础string类型可以用getxstring_c()或者getxstring_c_unattached()方法。
例如:
xstring xstr = L"你好";
const char* str = xstr.getxstring_c().mstr;
但在使用xstring拼接时,不要拼接窄字符!
第一:由于xstring并不是C语言原生类型,编译器并不会提示错误。
第二:这将引发崩溃,且很难调试,甚至调试不出问题所在。
错误示范:
xstring xstr1 = L"";
xstr2 = L"test";
xstr1 = xstr1 + "|" + xstr2;