命令行程序 user MFC
int _tmain(.......................
...
CString str;
str = "" ;
str += "asdfasdf" ;
str += "asdfasdf" ;
str += "asdfasdf" ;
str += "asdfasdf" ;
str += "asdfasdf" ;
str += "asdfasdf" ;
str += "asdfasdf" ;
str += "asdfasdf" ;
str += "asdfasdf" ;
str += "asdfasdf" ;
str += "asdfasdf" ;
str += "asdfasdf" ;
str += "asdfasdf" ;
str += "asdfasdf" ;
str += "asdfasdf" ;
str += "asdfasdf" ;
str += "asdfasdf" ;
str += "asdfasdf" ;
str += "asdfasdf" ;
str += "asdfasdf" ;
str += "asdfasdf" ;
str += "asdfasdf" ;
str += "asdfasdf" ;
str += "asdfasdf" ;
str += "asdfasdf" ;
str += "asdfasdf" ;
str += "asdfasdf" ;
str += "asdfasdf" ;
str += "asdfasdf" ;
str += "asdfasdf" ;
str += "asdfasdf" ;
str += "asdfasdf" ;
str += "asdfasdf" ;
str += "asdfasdf" ;
str += "asdfasdf" ;
str += "asdfasdf" ;
str += "asdfasdf" ;
str += "asdfasdf" ;
str += "asdfasdf" ;
str += "asdfasdf" ;
str += "asdfasdf" ;
str += "asdfasdf" ;
str += "asdfasdf" ;
str += "asdfasdf" ;
str += "asdfasdf" ;
str += "asdfasdf" ;
str += "asdfasdf" ;
cout<<str<<endl;...
就这点代码,为什么str 加到中间的某个地方,就不在招待 str+="asdfasdf";了。str的值就不会在变化了!!
为什么呀。怎么样解决这个问题?完成如下的功能,字符串的拼接CString a ;
CString b ;
CString c ;
...
a="a";
b="b";
c="c";
...
CString result;
result = a+b+c+...

解决方案 »

  1.   

    我试了一下,没问题啊
    另,好象要改为 cout << (LPCTSTR)str << endl;
      

  2.   

    初学VC
    总是找到了。是VC编辑器的总是,它只显示了字符串中的一段数据。
    那就请列举几个字符串拼接的方法吧。(跟据所提供的方法,结分)
    char + char
    CString + char
    char + CString
    char = LPCTSTR + LPCTSTR 
    ...
    请知道的朋友多举例子。 谢谢
      

  3.   

    我在mfc下试过,也在ms-dos模式下试过,都没问题:
    先把菜单里的工程->设置->选Use MFC in a Static library
    #include "Afx.h"
    #include "iostream.h"
    void main()
    {
    CString str;
    str = "" ;
    str += "asdfasdf" ;
    str += "asdfasdf" ;
    str += "asdfasdf" ;
    str += "asdfasdf" ;
    str += "asdfasdf" ;
    str += "asdfasdf" ;
    str += "asdfasdf" ;
    str += "asdfasdf" ;
    str += "asdfasdf" ;
    str += "asdfasdf" ;
    str += "asdfasdf" ;
    str += "asdfasdf" ;
    str += "asdfasdf" ;
    str += "asdfasdf" ;
    str += "asdfasdf" ;
    str += "asdfasdf" ;
    str += "asdfasdf" ;
    str += "asdfasdf" ;
    str += "asdfasdf" ;
    str += "asdfasdf" ;
    str += "asdfasdf" ;
    str += "asdfasdf" ;
    str += "asdfasdf" ;
    str += "asdfasdf" ;
    str += "asdfasdf" ;
    str += "asdfasdf" ;
    str += "asdfasdf" ;
    str += "asdfasdf" ;
    str += "asdfasdf" ;
    str += "asdfasdf" ;
    str += "asdfasdf" ;
    str += "asdfasdf" ;
    str += "asdfasdf" ;
    str += "asdfasdf" ;
    str += "asdfasdf" ;
    str += "asdfasdf" ;
    str += "asdfasdf" ;
    str += "asdfasdf" ;
    str += "asdfasdf" ;
    str += "asdfasdf" ;
    str += "asdfasdf" ;
    str += "asdfasdf" ;
    str += "asdfasdf" ;
    str += "asdfasdf" ;
    str += "asdfasdf" ;
    str += "asdfasdf" ;
    str += "asdfasdf" ;
    cout<<str<<endl;
    }
      

  4.   

    char+char:
    char s1[10]="fda";
    char s2[10]="ppp";
    strcat(s1,s2);
    //s1="fdappp"CString+CString
    CString a="fda";
    CString b="eewe";
    a+=b;CString=CString +char
    char s1="fda";
    CString s2="ppp";
    CString temp;
    temp.Format(s1);
    s2+=temp;
    //s2="pppfda"char=CString +char
    char buf[100];
    char s1[10]="fda";
    CString s2="ppp";
    char *temp;
    temp=str.GetBuffer(0);
    strcat(buf,s1);
    strcat(buf,temp);
    //buf="fdappp"
      

  5.   

    同意楼上的写法不过没太懂楼主想说什么,如果是说VC调试环境下,所能显示str的值的话,那肯定是有限的
    如果想在调试环境看到所有的字符串,可以考虑使用TRACE来显示Debug string
      

  6.   

    [楼主]我是在debug中发现str在IDE中显示的数据没有变化,所以以为是程序上有问题,其实就象[snaill()]说的那样。本贴问题改为"字符串的拼接方法"。请交流一下自己的宝贵经验
      

  7.   


    呵呵,你在哪里看str的变化啊?如果是在调试VC时在watch或viriables窗口里看,确实是那样的。内容的长度有限制!
      :)可以用TRACE宏,把STR输出到output窗口里或print出去,你就会看到它不断变化了。  ^-^
      

  8.   

    输出debug内容推荐用afxDump,除了没有TRACE宏255个字符的限制外,还可以连接几个变量输出(象cout一样),方便。
    如afxDump << str << "\n";
      

  9.   


    TRACE也可以带变量,它们是:TRACE1,TRACE2,TRACE3