诸位在VC下用惯了CString吧,有多少人在用string?
我就是深受其害者之一,最近需要写标准的c++,想用string,还要和CString之间进行转换,费事不少。
MS干嘛制造出CString这个怪物?明显就是要废string而立CString。其实大可不必啊,在string上增加成员函数不就行了?
有了CString,我都不会用string和char[]了!真是丑陋的CString!

解决方案 »

  1.   

    照此逻辑诸位在PC上用惯了Windows吧,有多少人在用Linux?
    我就是深受其害者之一,最近需要写程序,想用Linux,还要和Windows之间进行通讯,数据的高低位还要转换,费事不少。
    MS干嘛制造出Windows这个怪物?明显就是要废Linux而立Windows。其实大可不必啊,在Linux上增加功能不就行了?
    有了Windows,我都不会用Linux和DOS了!真是丑陋的Windows!
      

  2.   

    丑陋你不会不用吗?CString用C++并不是很难实现啊。再说你用MFC的时候不是觉得很爽吗,不然你干什么用它。真高不懂你。明明是你自己学业不精,还迁怒别人
      

  3.   

    呵呵,在此版面发这种帖子,明显是背鼓山门--找捶。
    我的意思是:VC++让大家偏离标准c++太远。CString是方便,但是最近在Linux下使用GCC,就不得不重写复习string了,只怪自己学业不精啊。
    呵呵!
      

  4.   

    jiangsheng(蒋晟.MSMVP2004Jan) :
       此话怎讲?你所谓的逻辑,真是混乱的逻辑。
       我是比较VC++和标准的C++,两者不但有逻辑关系,还有渊源关系。你来比较Linux和Windows,语气中还怨气冲冲,两者我看不出有VC和C++的类似关系:我说竟然有string,就可不必再有CString,至少C++在前,VC在其上发展起来的。Linux在Windows之后,而且无论是产生、发展、还是使用习惯上都与Windows没有多大联系。
       唉,我实在是看不出你的所谓“逻辑”何在?更不知道你怨气何来?我猜,唯一的理由是对VC的指摘就是对MS Fan的冒犯,呵呵,冒犯冒犯!
      

  5.   

    哦,还有,对MS的指摘者,必定属于Linux阵营,呵呵
    在这里“革命没有中间路线!”
    真是界限分明、逻辑简单啊,呵呵不过我最近是在大力从Windows向Linux转移,无论是开发、还是桌面运用。只是Linux的初学者,有星星大侠把我划入Linux阵营,真是荣幸!
      

  6.   

    我的意思是不要把没有继承关系的东西拿来说有一个可以不用另外一个,即使有继承关系(例如Windows 2000和Windows98,MFC6和MFC7)也有时不能这么说。用不用一个东西是需要很多考虑的,例如产品价格、移植和培训用户所需成本等等。VC是IDE不是语言,在VC中也可以不用CString写程序。因为你用了CString举例,所以我假定你说的应该是MFC。string从属于标准C++类库,但是STL和MFC是分头发展起来的,没有继承关系。MFC1.0也没有必要去遵循和MFC6同一年发布的标准。我只是照搬你的语气,并不是我有怨气。
      

  7.   

    其实两个类也差不多,没什么质的区别。个人觉得CString比std string还要好用点呢。
    因为我不太喜欢再用ostringstream
      

  8.   

    干脆只用 char* 吧! c和c++都支持!
      

  9.   

    string和CString挺好转换的呀,string有.c_str()呀
      

  10.   

    我觉得Cstring挺好的!
    至少对MFC挺好的!
      

  11.   

    一般大型的类库或者工程都会有自己的string,不信你随便找一些库来看看,里面总会有一大堆的字符串处理的函数或者类。stdstring毕竟不能满足完全的需要。
      

  12.   

    不懂搂主的逻辑。VC只是一个IDE而已,选什么库是你自己的事情。你为什么一开始选择CString而不用string呢?
    就像sevencat(七猫)说的,只要像样一点的类库都有自己的string类,并非所有的string类都会与stl的兼容,你需要为自己的选择负责,而不是责怪CString与std::string不兼容。你还可以想一想MFC库的设计是什么时候的事情,那时候C++还没有标准呢。
      

  13.   

    CString 有很多缺点。也有优点啊。缺点就是速度太慢。比起char buff[]速度慢。但是使用不容易超范围啊。有64k那么大呢。习惯就好了。
      

  14.   

    感觉CString老出毛病,但是这些毛病一rebulid all就解决了
      

  15.   

    现在自己开发的string类,大都是以CString为原形参考的。
    所以你可以不用CString,但是不能不承认它的思想。
      

  16.   

    不知楼主是怎么得到两个星的,是先有MFC,还是先有标准STL。
      

  17.   

    恩。我对cstring也有点点恼火——呵呵,很多api函数,都是用cstring类型,可是我们做别的环境下的dll,总是很难引用!     借楼主宝地问一下:挂接api函数中的GetDlgItemText函数,它有两个原形:一个是GetDlgItemText(int nid,CString &str),一个是GetDlgItemText(int nid,LPTSTR str,int maxcount) 我做了个dll挂接后者,可以挂接成功,可是挂接前者,总是提示不认识cstring,我包含了,cstringt.h头文件,好象也没什么用!    而且,我发现挂接后的那些参数,根本和我正常使用的不同!晕!
      

  18.   

    CString还有内存管理方面的问题
      

  19.   

    恩。我对cstring也有点点恼火——呵呵,很多api函数,都是用cstring类型,可是我们做别的环境下的dll,总是很难引用!
    //没有一个WINAPI是直接调用CString的,你说的都是对他的封装
    CString还有内存管理方面的问题
    //VC6以后这个BUG好像就已经没有了。
      

  20.   

    诸君请注意这样一个事实:MFC出来时C++标准还没公布呢,不止字符串,其它如异常处理,运行期类型信息(RTTI)等,也是因此才在MFC中另开发了实现版本的。
    就功能而论,CString比string要强,引用计数的方式也很好。
      

  21.   

    MFC有时候我看着就想吐,不过我现在还用这个。
      

  22.   

    API 哪有以CString作参数,我怎么没见过MFC7.1种CString用起来很舒服。不过我string用的多一些
      

  23.   

    VC6的CString应该是有引用计数的,因为是COW,VC7不用了。如果要考虑移植性,一开始就别用CString。
      

  24.   

    .NET中用的是String,和CString是两个东西了
      

  25.   

    ms拿核弹威胁你用CString吗,如果你觉CString太烂的话,你可以自己写一个Xstring,再来打击CString呀!
      

  26.   

    我开始也觉得CSting多余。
    后来程序写得多了,就开始明白CString存在的价值。
    我可以大胆的说一句:
    凡是在程序中用string和CString进行频繁转换的,本身就是在制造垃圾代码,就算微软当初在MFC中使用string,他写出的代码一样的垃圾,一样无法重用。到时候他又可以归罪于CArray CList CMap了。
    不信谁贴一段代码大家评评。
      

  27.   

    gcc 是否支持strcpy等?
      

  28.   

    class youstring (){
      .......////用你的string实现Cstring 的函数
    }#define CString youstring
    --------------
    这样你就可以了。
      

  29.   

    有一天让写一个不让用MFC的程序,要取一串字符串中间的几个,要找以abc开始子串在哪,好麻烦啊,没有习惯string,就用了char自己在strcpy strcmp中搞了半天!为什么?
      

  30.   

    std::string也有这样的函数的。
      

  31.   

    问题是有必要为几个小字符而引入与STL相关的庞大类库么?
      

  32.   

    唉,我一直都认为CString比string早诞生几年。 ;)
    我的理由是:
    (1)CString比string多一个大写字母,想必是历史也更长些。
    (2)我先听说CString,后来才知道还有string。
       说来惭愧,我刚见string,还以为是CString拼写错了。 ;(
    (3)string比CString功能更强大,
       想必是因为它后诞生,因此保留了CString的全部优点,
       同时添加了更多更好的功能。
      

  33.   

    其实CString 也不错,什么也有好有坏。
    关键看你怎么用!
      

  34.   


     回复人: fibbery(飞) ( ) 信誉:100  天上的星星亮晶晶,颗颗都是小眼睛……
    ^________________________________^吃惯了麻辣烫  以后闻见辣味 就会流口水。
      

  35.   

    萝卜青菜,各有所好嘛,爱用char的就用char,爱用CString就用CString,但作为微软,MFC是一套Framework,如果连string都不wrap,还能叫Framework吗?但用不用就听任大家了,其实我的程序里就是LPCTSTR比CString多,不是不喜欢,只是想避免很多的小内存分配而已