整一个字符串游戏

最初的目的是为了fix一个零件属性的显示名的大小写bug,弄到最后,整一个字符串转换游戏!!!

最初是通过com接口拿到属性的显示名字,本来是由api提供的函数,跟我没啥关系。既然bug报上来了,哪怕傻点,这个bug也要解决啊,于是……

CComBSTR name;
pProp->get_DisplayName(&name); //假设已经拿到名字值,只是值不符合大小写规范

字符串游戏正式拉开序幕!

    BSTR bstrText = name.m_str; //先拿到BSTR值;
    CString str(bstrText); //转换成CString
    int nLen = str.GetLength();
    TCHAR cTemp = str.GetAt(0); //返回的竟然是TCHAR类型
    //
    int iLen = 2 * wcslen(&cTemp);
    char* chRtn = new char[iLen + 1];
    wcstombs(chRtn, &cTemp, iLen + 1); //干吗呢,原来为了用个大小写转化函数,要把THAR转化为char类型
    strupr(chRtn); //就为了用你,搞的那么麻烦
    str.SetAt(0, *chRtn); //又要转化为TCHAR,不管了,先用char试试,竟然可以了!!!好奇怪
    for (int i = 1; i < nLen; i++)
    {
     if(str.GetAt(i - 1) == ' ')
     {
      cTemp = str.GetAt(i);
      //
      int iLen = 2 * wcslen(&cTemp);
      char* chRtn = new char[iLen + 1];
      wcstombs(chRtn, &cTemp, iLen + 1);
      strupr(chRtn);
      str.SetAt(i, *chRtn);
     }
    }
    //name = _com_util::ConvertStringToBSTR(str); //本来想用这个,结果要char*类型的,晕
    name = str.AllocSysString(); //再把CString转化为BSTR类型。庆幸没有还要做成CComBSTR

难道是自己搞复杂了?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值