用 + 连接大量字符串太慢了,所以想问问大家都没有类似stringbuilder的类可以用

解决方案 »

  1.   


    MFCCStringCString str1 = "Tom";
    CString str2 = " and ";
    CString str3 = "Jerry";CString str = str1 + str2 + str3;
      

  2.   

    VS.NET以上版本中CString已经不再属于MFC专用,非MFC也能使用。
    如果嫌CString大量+操作太慢,可以预先设置好CString的缓冲区大小,或者自己重载+操作符提高性能。
      

  3.   

    VC中的CString和stl::string实际上和java的StringBuild和StringBuffer是完全一样的,不会有CString::operator+效率比stringbuild还低的说法java中的stringbuild出现只是因为他的string没有动态改变的能力,他的string倒是很快,在VC中没有类似于java中的string对象,只有类似于StringBuild的对象。
      

  4.   

    要快速自己分配一个大的目标缓冲区,用strcpy/strcat函数拼接,或者memcpy函数,还能更快么?
      

  5.   

    用Cstring和std::string时的+号联接N个字符串时,第一个字符串和第二个会被拷备N-1时,第三个会被拷备N-2次...以此类推
    CString strText;
    for(int i = 1;i <= 10000;++i)
    {
       strText += "OK";
    }
    这样连接速度很慢。我想问大家C++中有没有类似stringbuilder的类可以实现像这样CString strText;
    StringBuilder strBuilder;
    for(int i = 1;i <= 10000;++i)
    {
       strBuilder.append("OK");
    }
    strText =strBuilder.toString();
      

  6.   

    这样可以实现较少的内存的分配,自已实现一个StringBuilder也好实现,我是想问问有没有现成的类,成熟的类可以使用
      

  7.   

    先调用CString::SetBuffer设置好缓冲区大小,只要不超过这个大小,附加字符串是很快的,因为不涉及到内存的重分配