请教string的效率

wcwyf001 2008-06-28 01:00:00
请问C++里面string的效率高还是c中用字符串数组的效率高?
谢谢。
...全文
163 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
五号智能 2008-06-29
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 wcwyf001 的回复:]
谢谢大家,如果我要处理大约有几兆长度的字符串呢?

[/Quote]
问题已经很明朗了,选择在于你的操作。

如果你只对字符进行cout,简单的操作,当然是字符数组快。

但如果你对你的数据进行比较复杂的操作,查找,复制,比较,连接,那最好是string.string很多功能都可以简化你的代码,安全实用性能还高。
wcwyf001 2008-06-29
  • 打赏
  • 举报
回复
谢谢大家,如果我要处理大约有几兆长度的字符串呢?
fish6344 2008-06-28
  • 打赏
  • 举报
回复
这个问题没有争论的意义,Bjarne Stroustrup对此有专门的文章讨论过,还可以参考《C++标准程序库》!结论就是我在12楼说的!
fhb13 2008-06-28
  • 打赏
  • 举报
回复
当然是C的数组效率高,但是string用起来方便。
feige2008 2008-06-28
  • 打赏
  • 举报
回复
我喜欢string,用起来很方便,而且基本上没出现过问题。
fish6344 2008-06-28
  • 打赏
  • 举报
回复
不好意思,少打两字,特更正:

这也正是C++标准委员会和STL实作者不对C风格字符数组作某种优化(放弃C风格字符数组)而仅推荐使用string的原因!
fish6344 2008-06-28
  • 打赏
  • 举报
回复
究竟是C风格的字符数组效率高还是STL的string效率高?

当你在程序中只需简单的使用一个定长的字符串,例如:

void show(void)
{
char chs[] = "Good!";
cout << chs << end;//仅用于提示性的屏幕输出;
}

上述对字符串的应用需求,在程序中较为普遍。显然上述情况中,chs数组无需堆内存的申请与释放、对象建构与析构以及那些成员函数的调用开销,因此效率明显高于string!

但是在稍为复杂一些的应用需求下,例如chs可能需要动态的变换长度;或是可能对字符串经常作一些变易性与非变易性操作以及可能作为参数传递给下层的子程序作上述操作等等,则无论是代码的增加以及执行效率(当然还有重要的安全性),使用string无疑在编程效率和执行效率都明显优于C风格的字符数组。这也正是C++标准委员会和STL实作者不对C风格数组作某种优化(放弃C风格字符数组)而仅推荐使用string的原因!
fflush 2008-06-28
  • 打赏
  • 举报
回复
效率高低取决于你使用的方式,而不是你使用什么
simo110 2008-06-28
  • 打赏
  • 举报
回复
是啊
都用C++就基本都用string了
blackmurder 2008-06-28
  • 打赏
  • 举报
回复
在乎效率在乎到那种程度的话,C也别用了,直接上汇编算了
K行天下 2008-06-28
  • 打赏
  • 举报
回复
效率是 C-字符串数组高
但是经常会有越界之类的风险
string还是比较安全智能的
wjb_yd 2008-06-28
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 jieao111 的回复:]
安全第一。效率不应该是首要考虑的
[/Quote]
iambic 2008-06-28
  • 打赏
  • 举报
回复
在乎效率的话也不要用C++了。
  • 打赏
  • 举报
回复
在乎效率的话,别用string
Michael_555 2008-06-28
  • 打赏
  • 举报
回复
c的字符串数组的效率要高
jieao111 2008-06-28
  • 打赏
  • 举报
回复
安全第一。效率不应该是首要考虑的
baihacker 2008-06-28
  • 打赏
  • 举报
回复
直接操作字符数组,不方便,但是由于是直接访问,所以访问速度快,但是可能不安全.
但是strin用起来方便,也安全.
sinosinux 2008-06-28
  • 打赏
  • 举报
回复
string更安全更方便

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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