当前位置:  开发笔记 > 编程语言 > 正文

为什么在c ++中使用c字符串?

如何解决《为什么在c++中使用c字符串?》经验,为你挑选了3个好方法。

现在有没有什么好的理由在C++中使用C-strings?我的教科书在某些方面的例子中使用它们,我觉得使用std :: string会更容易.



1> dvorak..:

我必须使用它们的唯一原因是与使用C样式字符串的第三方库连接时.出于性能原因,可能还会有一些深奥的情况,你会使用C样式字符串,但更多时候,由于内联和专业化等原因,使用C++字符串上的方法可能更快.

c_str()在使用这些API时,您可以在许多情况下使用该方法,但是您应该知道返回的char*是const,并且您不应该通过该指针修改字符串.在这种情况下,你仍然可以使用vector ,至少可以获得更简单的内存管理.


返回值是const的原因.使用const_cast或C强制转换修改它会使内部对象状态失去同步.它应该是"不得修改",而不是"不应该".

2> bk1e..:

更多内存控制说明:

C字符串是POD类型,因此可以在应用程序的只读数据段中分配它们.如果std::string在命名空间范围内声明和定义常量,编译器将生成在main()调用std::string每个常量的构造函数之前运行的其他代码.如果您的应用程序有许多常量字符串(例如,如果您生成了使用常量字符串的C++代码),则在这种情况下可能更喜欢C字符串.

某些实现std::string支持称为SSO("短字符串优化"或"小字符串优化")的功能,其中std::string该类包含最多一定长度的字符串的存储.这增加了大小,std::string但通常会显着降低免费存储分配/解除分配的频率,从而提高性能.如果您的实现std::string不支持SSO,那么std::string在堆栈上构造一个空的仍将执行自由存储分配.如果是这种情况,使用临时堆栈分配的C字符串可能对使用字符串的性能关键代码有帮助.当然,当你这样做时,你必须小心不要在脚上射击.



3> PhiLho..:

因为他们是如何来自众多API /库的?

推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有