关于Creo二次开发中xstring类型拼接的坑

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;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值