操作符重载 写一个字符串类。对[]进行重载。string[3]='a';char temp=string[3];都OK了。但当 string[3]=NULL;操作是成功了。但是我的类里面有一个整形变量表示长度。怎么处理并保存字符串的长度。char& operator [] ( int Index ){.......这里怎么写??} 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 string[3]是个字符,你为什么给它NULL?NULL一般只给指针既然是字符串类,[]应该返回一个字符,为什么需要关心、表示长度?字符不就一个字节长度? NULL就是0,可以赋值给任何你需要的变量,谁说只能是指针?对下标操作符[]进行重载,既可以返回变量值,也可以设置变量值。字符不就一个字节长度?还要看是什么字符吧, utf-8的可就多了。 这取决于你对那个长度变量的定义了,是指存储区域有效内容的长度(比如CString中的GetLength()),还是字符串的有效长度(strlen获取),当你决定了这个变量的作用时,你的那个函数就应该好写了。 这是你理解上的错误。没错,NULL就是0,但是当你定义这个宏的时候,已经把它符号化了。定义宏的目的在于使代码更易于理解,因此大家都已经把NULL当作“指针”来对待了,如果在所以可以赋值为0的地方都使用NULL,就没有这个意义了。你所谓的长度应该使字符串的长度,这里我所说的一个字节的长度,其实是一个“字符”的长度。你顶楼想涉及的长度我想一定不是多字节字符所对应的长度吧? 是字符串的有效长度(strlen获取),char& operator [] ( int Index ) { return *(mystring+Index);} .......实际上只是一个return在return之前写,strlen肯定没效果,return之后,更不行了。在[]里又不能捕获 NULL。总不能这样string[3]=NULL;string.len=strlen(string.mystring);或者string[3]=NULL;string.len=3;吧。 NULL当作“指针”NULL就一定要和指针联系在一起?还大家......还我的理解有问题............ 既然返回的是个char的引用,LZ的需求应该是搞不定的。除非你返回的是自定义的另一个类,并且这个类重载了“=”。 既然返回的是个char的引用,LZ的需求应该是搞不定的。 我觉得也是这样。除非你返回的是自定义的另一个类,并且这个类重载了“=”。能详细点吗? operator [] 需要返回的是字符串中的一个字符,你要关心长度干吗? 这样的类不安全。还是只提供一个const的[]吧 我觉得你提的这个问题真的不错。你的类里有这么个变量,表示字符串长度,即你分配的内存大小,你的GetLength()是直接返回这个变量吧?而同时又有个strlen函数。在没有string[3]=NULL;这样的赋值的时候,这两者是一致的,而有了这样的赋值就不一致了。是不太好解决。 vc++6.0 获取静态文本框的尺寸的问题??? 求。。vc++6.0编程开发宝典。。光盘(电子工业出版) 问下VC的编译器使用什么语言作的?汇编? new窗口的问题,请高手赐教 谁有围棋的源代码 请问谁可以提供给我Mifare One卡的详细资料??? 请教高手关于图像内存 device context 的问题 我使用了OnNcPaint()函数,在函数中加入了需要描绘的图片,但是在显示的时候,出现了点问题,图片没有完整的显示出来!请高人指点!! VC中的小问题???? 如何替换字符串? 如何绘制灰度图像的强度(灰度)曲线??高手帮帮忙吧 按钮消息函数与同步套接字ACCEPT?
既然是字符串类,[]应该返回一个字符,为什么需要关心、表示长度?字符不就一个字节长度?
[]
进行重载,既可以返回变量值,也可以设置变量值。字符不就一个字节长度?
还要看是什么字符吧, utf-8的可就多了。
你所谓的长度应该使字符串的长度,这里我所说的一个字节的长度,其实是一个“字符”的长度。你顶楼想涉及的长度我想一定不是多字节字符所对应的长度吧?
char& operator [] ( int Index )
{
return *(mystring+Index);
} .......实际上只是一个return
在return之前写,strlen肯定没效果,return之后,更不行了。
在[]里又不能捕获 NULL。
总不能这样
string[3]=NULL;
string.len=strlen(string.mystring);
或者
string[3]=NULL;
string.len=3;
吧。
除非你返回的是自定义的另一个类,并且这个类重载了“=”。
你的类里有这么个变量,表示字符串长度,即你分配的内存大小,你的GetLength()是直接返回这个变量吧?
而同时又有个strlen函数。
在没有string[3]=NULL;这样的赋值的时候,这两者是一致的,而有了这样的赋值就不一致了。
是不太好解决。