//连接十个以内的字符串
CString ConnectionString(CString str1, CString str2, CString str3 =_T(""), CString str4 =_T(""), CString str5 =_T(""), CString str6 =_T("") , CString str7 =_T(""), CString str8 =_T(""), CString str9 =_T(""), CString str10 =_T(""))
{
CString strTemp; strTemp += str1.GetString();
strTemp += str2.GetString();
strTemp += str3.GetString();
strTemp += str4.GetString();
strTemp += str5.GetString();
strTemp += str6.GetString();
strTemp += str7.GetString();
strTemp += str8.GetString();
strTemp += str9.GetString();
strTemp += str10.GetString(); return strTemp;
}
这是在VS2005下写的,但在VC6下不能编译通过。GetString()函数在VC6中没有定义。谁能帮我改一下此函数,让其在VC6下实现相同功能。完全实现者给100分。

解决方案 »

  1.   

    //连接十个以内的字符串 CString ConnectionString(CString str1, CString str2, CString str3 =_T(""), CString str4 =_T(""), CString str5 =_T(""), CString str6 =_T("") , CString str7 =_T(""), CString str8 =_T(""), CString str9 =_T(""), CString str10 =_T("")) { 
    CString strTemp; 
    strTemp += str1; 
    strTemp += str2; 
    strTemp += str3; 
    strTemp += str4; 
    strTemp += str5; 
    strTemp += str6; 
    strTemp += str7; 
    strTemp += str8; 
    strTemp += str9; 
    strTemp += str10; 
    return strTemp; 
    }
      

  2.   

    直接加不行,我才写函数的。应该是用GetBuffer(),不过我不会用。不知道给GetBuffer(int n) n应该怎么给。
      

  3.   

    #include<iostream.h>
    #include<string>   
    using   namespace   std;  
    string ConnectionString(string str1, string str2, string str3, string str4, string str5, string str6, string str7, string str8, string str9, string str10)
    {
        string strTemp;    strTemp += str1;
        strTemp += str2;
        strTemp += str3;
        strTemp += str4;
        strTemp += str5;
        strTemp += str6;
        strTemp += str7;
        strTemp += str8;
        strTemp += str9;
        strTemp += str10;    return strTemp;
    }
      

  4.   

    或者可以这样:
    CString strTemp;
    strTemp.Format("%s%s%s%s%s%s%s%s%s", str1,str2,str3,str4,str5,str6,str7,str8,str9,str10);
      

  5.   

    1、居然有这种函数,俺先汗一个。
    2、俺不明白为什么CString直接+为什么不行。
    3、函数形参直接使用类,会导致类的的构造和析构,效率低下,建议使用指针。
      

  6.   

    vc不用GetString(),mfc可以直接用CString
      

  7.   

    CString ConnectionString(CString str1, CString str2, CString str3 =_T(""), CString str4 =_T(""), CString str5 =_T(""), CString str6 =_T("") , CString str7 =_T(""), CString str8 =_T(""), CString str9 =_T(""), CString str10 =_T(""))
    {
            return str1+str2+str3+str4+str5+str6+str7+str8+str9+str10;
    }
    楼上说得没错,CString确实重载了很多运算符,具体可以查看MSDN,上边的函数我试过,可以的。
      

  8.   

    直接+是可以,CString确实重载了+运算符.
    GetBuffer用法大致这样:
    CString str1 = "1234",str2;
    str2 = str1.GetBuffer(str1.Getlength()),
      

  9.   


    CString strComboBoxItemTitle; CString strAnalogSensorName(iterAnalogSensor->GetAnalogSensorName());
    CString strAnalogSensorID(iterAnalogSensor->GetAnalogSensorID()); strComboBoxItemTitle +=strAnalogSensorName;
    strComboBoxItemTitle += _T("(");
    strComboBoxItemTitle += strAnalogSensorID;
    strComboBoxItemTitle += _T(")");
    执行结构为()。改为以下:strComboBoxItemTitle += strAnalogSensorName.GetString();
    strComboBoxItemTitle += _T("(");
    strComboBoxItemTitle += strAnalogSensorID.GetString();
    strComboBoxItemTitle += _T(")");
    结果正确,所以写了函数,以后在VC6下改代码,不必每一处都改。当然 CString重载了+。如果CString str1 ,str2; str1+str2是可以的实现。
    我的代码问题好像涉及到了CSimpleString这么一个类。
      

  10.   


    我这样试过,不行,我的字符串为"1".使用GetBuffer(str.Getlength())后结果为"1        "后边莫名加了好多空格。
      

  11.   

    CString str1 = "1234",str2; 
    str2 = str1.GetBuffer(str1.Getlength()),
    不要用getbuffer直接str2 = str1;
    VC05注意是否使用UNICODE
      

  12.   

    这是在VS2005下写的,但在VC6下不能编译通过。GetString()函数在VC6中没有定义。应该是把clr改成mfc
      

  13.   

    CString strTemp;
    strTemp += str1;
    ....
    return strTemp;直接加就可以。
    ---------------------------------------
    在VC6中没有定义GetString()函数,看来你是想把CString里存的字符串取出来吧,在你的函数里没有这个必要。
    如果你在其他的应用非要取出字符串的实体的话,可以通过下面的三种方法的其中一种。比如,设某一个窗口的标题。
    pWnd->SetWindowText(strText);
    pWnd->SetWindowText((LPCTSTR)strText);
    pWnd->SetWindowText(strText.GetBuffer(0));
      

  14.   

    大哥们,直接加行的话,我还用来散分。
    看来你们是没有碰到过这问题。
    在网上查到过这个问题,他也是.GetString() 解决的。
    这个问题很明确是要GetBuffer()来解决。
    还是自己研究吧。
      

  15.   

    CString strTemp; 
    strTemp.Format("%s%s%s%s%s%s%s%s%s", str1,str2,str3,str4,str5,str6,str7,str8,str9,str10); 这样解决问题了,谢谢大家。
      

  16.   


    你意思是说把CString参数变成指针,我以为用引用更好,不会让人在传值的时候还得加&。不方便。
    我不是不考虑性能,我上边说过。只是为了以后在VC6下改代码方便,不用每一处都改。
    性能
    我没到那种追求性能的境界,我毕业参加工作10天左右。对我来说,完成工作更重要。
    你无语,就去无语吧