如题,CString的大小是不是能通过sizeof来获取,而长度是不是能通过getlength来获取?

解决方案 »

  1.   

    你要它的大小干什么?
    sizeof得到的应该不对吧
      

  2.   

    如果是获取其内容的大小值可以用getlength
      

  3.   

    sizeof获得CString类的对象的大小,而不是对象里的字符串的长度
    其实对字符串来说,一般不用sizeof计算长度
      

  4.   

    CString的大小和长度是一样的意思吗?
      

  5.   


    sizeof(CString)是CString这个类所占内存的大小。
    CString.Getlength()是CString中字符串的长度。
      

  6.   

    上面说的都有道理,但是这还和你的编码方式有很多关系,ANSI和Unicode是有差别的。
      

  7.   

    楼主说的是CString对象中字符串的长度吧?可以这样获取
    CString strTemp = _T("fjdakljfdajfd");
    int len = strTemp.GetLength();一般来说,CString会自动给对象分配一定长度的字符空间,例如32字节、64字节或者128字节,不管你用不用这么多,不够的时候再重新分配。但是,这个对我们编程来说没有意义,我们一般值关心当前字符串的长度。也就是strTemp.GetLength()
      

  8.   

    举个例子:class A
    {
         char *ch;//指向一个char空间
         int len;//记录了ch所指向的空间中,实际保存的字符的长度
         int maxlen;//记录了ch指向的空间的大小
         public:
         int GetLength()
         {
               return len;
         }
    };
    sizeof(A);得到的就是类A的成员变量所占的空间之和。在这个例子中,其得到的值为12字节。(其中还涉及了成员变量的对齐问题)
    GetLength()就不用多说了吧。
      

  9.   

    sizeof获得的只是CString类的大小。而字符串是在其他地方的,CString类里只是有个指针指向那个字符串