参数类型string和const char*哪个更合理?
创始人
2025-06-01 06:13:41
0

参数类型string和const char*哪个更合理?


看一些C++项目时,发现有些函数传递的参数类型是const char*,我在想,为什么一个C++项目要用char*指针?用string会不会更好?

今天,我们就来简单分析一下,函数参数使用string还是const char*,哪个更合适?

两种方式的函数声明如下:

​​​​​​​

void func(const char* s);void func(const std::string& s);

当源是string时:

​​​​​​​

void funcstr(const std::string& s) { std::cout << s; }void funcchar(const char* s) { std::cout << s; }int main() {    std::string s("fdsfds");    funcstr(s);    funcchar(s.c_str());    return 0;}

两种方式没啥区别,都能满足需求,性能也差不多。

然而,当源是"xxxx"这种普通字符串时:

​​​​​​​

void funcstr(const std::string& s) { std::cout << s; }void funcchar(const char* s) { std::cout << s; }int main() {    funcstr("dsdd");    funcchar("dddd");    return 0;}

可以分析出来,当传递的是"xxxx"这种串时,string方式会自动创建出个临时对象,临时对象的构造和析构会降低性能。

再一个,string(basic_string)是个封装类,它占用的空间肯定比const char*更大,这块我后续详细介绍一下string的源码分析吧。

总结如下:

const char*相比于string的优点:

  • 适配性更好,C语言和C++都适用;

  • 效率更高,当传递的是"xxxx"这种串时,string方式会自动创建出个临时对象,临时对象的创建和销毁也是比较耗费性能的;

  • 还是效率,string占用的空间比const char*更大。

说了一大堆const char*的优点,那么,使用string有没有优点呢?

string相比const char*的两个优点:

  • 方便,不需要关心是否释放相关内存,不需要担心内存泄漏问题;

  • 有些string是const char*不能替代的,比如一个string中间有'\0',使用const char*作为参数传递过去会被截断的,也就不符合需求。

最后,大家怎么看?

END

来源:程序喵大人


版权归原作者所有,如有侵权,请联系删除。

 

相关内容

热门资讯

固德电材内控隐忧:实控人曾隐瞒... 本文来源:时代商业研究院 作者:陆烁宜 来源丨时代商业研究院作者丨陆烁宜编辑丨郑琳实控人配偶通过股权...
锂电隔膜整合提速,佛塑科技51... 本文来源:时代商业研究院 作者:陈佳鑫 来源|时代商业研究院作者|陈佳鑫编辑|韩迅近期,锂电隔膜行业...
深夜强拆华人纪念碑,天亮就下令... 深夜强拆华人纪念碑,天亮就下令重建,巴拿马在打脸给谁看?12月27日深夜,巴拿马阿赖汉市政府动用重型...
上证指数明天能否站上4000点... 文/《清华金融评论》王茅明天是2025年最后一个交易日,上证指数若能站在4000点上方,将给市场传递...
沪指10连阳,持股还是持币过元... 本文来源:时代周报 作者:黄宇昆2026年元旦假期将至,A股市场将迎来短暂休市。根据沪深京交易所安排...
“木头姐”踩中大雷?知名分析师... 来源丨美股财经社美国知名投行和资管公司Needham & Company LLC 的分析师下调了对C...
境外债务重组正式生效,旭辉境内... 本报记者 李贝贝 上海报道12月29日,旭辉控股集团(下称“旭辉控股”)(08884.HK)公告,公...
富豪榜上唯一分灶夫妻,家族财产... 这是2025年胡润中国富豪榜上医药界的女首富和男首富,女首富钟慧娟身家1410亿,排名第25,男首富...
上市以来股价跌去88%!倍轻松... 本报(chinatimes.net.cn)记者胡梦然 深圳报道前脚刚收到民事起诉状,后脚公司及实际控...
百花医药:公司筹划控制权变更 ... 新京报贝壳财经讯 12月30日,百花医药公告,公司控股股东、实际控制人正在筹划公司股份协议转让事宜,...