整一个字符串游戏

    技术2022-05-11  145

    最初的目的是为了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

    难道是自己搞复杂了?


    最新回复(0)