none
关于CString与0xFFFF的问题 RRS feed

  • 问题

  • 问题如下:VS2010新建Win32 Console Application,勾选MFC,要用到CString,具体代码和问题请看源码。

                CString str;
                TCHAR* p = new TCHAR[31];
                p[0] = 0xFFFF; //如果换成别的值,就没有后面的问题:比如 p[0] = 0xFFFB
                p[1] = _T('A');
                p[2] = _T('A');
                p[3] = 0;
     
                CString strP = CString(p); //结果:strP == “AA”  
     
                str.Format(_T("%s--%s"), _T("ab"), strP); //结果:str == “”, ,不是我期望的结果!为什么?  
     
                str = _T("ab--") + strP; //结果:str == “ab--AA”, 这个是我期望的结果!
                 
                delete[] p;

    2014年8月6日 9:34

答案

全部回复

  • 请在Debug模式下F11进入CString::Format()函数中去看看一下,最终会调用output.c文件的write_char()函数中。

    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.

    • 已建议为答案 Shu 2017 2014年8月8日 3:06
    • 取消建议作为答案 Shu 2017 2014年8月11日 1:58
    2014年8月7日 2:56
    版主
  • 你好:

            据我所知,cstringt.h头文件里的format函数的参数列表里是不能用字符串对象的,如果用了的话会调用失败,

    而且会产生不能预计的结果。具体的介绍可以参考MSDN的说明:

    The call will fail if the string object itself is offered as a parameter to Format. For example, the following code will cause unpredictable results:

    希望这能够帮助你。

           有什么问题可以继续在论坛提问,我很高兴为你解答。

    Shu Hu


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    • 已标记为答案 Shu 2017 2014年8月15日 2:55
    2014年8月11日 2:13