刚看了你的一个帖子

xtting_8984313 2009-03-10 05:26:20
感觉lz有几个误区呢,不知道是否正确?
1、至于那个const错误。因为c_str通常返回的是string类中的一块数据去,是不可以被修改的,所以可能返回的是const char*。如果需要你那样的形式,要么1、重新分配内存,再拷贝过去,返回,要注意内存释放;2、强制转换过去(需要c++强制转换),但不建议

2、stl算法中,通常使用的是传值操作,你的这种返回本身有问题,很难用在stl算法上。而且返回类型通常是type_name,也就是string.[]对应的是iterator.

3、即使某些算法可以使用,如果想如下操作,如何处理?
vectInstans[12] = xxxxxx;
这个xxxxx,在当前定义下,是无法传回去的

4、修改接口如下

vector <string>::iterator& operator[]{
.........
}
...全文
103 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
xtting_8984313 2009-03-10
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 hairetz 的回复:]
楼主贴原帖嘛。
[/Quote]



http://topic.csdn.net/u/20090310/16/eae8860b-3ba1-4e70-b735-685bef27fc04.html

不好意思,忘了!本来是以为那个lz看来着
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 xtting_8984313 的回复:]
引用 2 楼 akirya 的回复:
可以保存一个字符串啊来存储返回值.


如果这样,很多stl算法就不可以用了,而且对随机形的会有移植问题。
[/Quote]
怎么不能用了?

有算法用到下标运算符么?
  • 打赏
  • 举报
回复
楼主贴原帖嘛。
xuguod20042576 2009-03-10
  • 打赏
  • 举报
回复
mark
lingyin55 2009-03-10
  • 打赏
  • 举报
回复
up
KevinYuen 2009-03-10
  • 打赏
  • 举报
回复
那个方法的关键我认为是使用了string,并想直接将c_str()非常量返回,和vector无关,就算方法是
char* getCStr( string str ){ return str.c_str(); }
也是不行的.

我认为最好的方法要么是楼主说的引用传递出来再修改,要么就是重新写自己的string类,提供char* c_str()方法.
xtting_8984313 2009-03-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 akirya 的回复:]
可以保存一个字符串啊来存储返回值.
[/Quote]

如果这样,很多stl算法就不可以用了,而且对随机形的会有移植问题。
weidong0210 2009-03-10
  • 打赏
  • 举报
回复
up
  • 打赏
  • 举报
回复
可以保存一个字符串啊来存储返回值.
sagegz 2009-03-10
  • 打赏
  • 举报
回复
支持楼主~!

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧