我正在看一本 C++ 教程书,作者说大多数 C++ 编译器都包含一个 String 类库,但即使有,还是建议创建自己的 String 类。不幸的是,作者没有说明原因。有没有人不同意/同意,为什么?
我正在使用 Xcode 并且提供的 String 类对我来说似乎很好,但话又说回来,我只使用了几个小时,所以我不知道这些限制。
提前致谢。
听起来你有一本旧书。
C++ 标准库包含std::string
该类,您应该使用它,而不是自己发明并修复已在广泛使用的库中遇到和修复的错误。
由于您是初学者,是的,您应该尝试实施自己的方法,因为它会教给您很多东西。只是不要在任何“真实”项目中使用它。
建议创建自己的 String 类
我相信作者建议创建你自己的String
类,作为一个很好的编程练习来培养你的技能。
String
暗示为实际生产代码或非学术代码创建自己的类是荒谬的(至少可以说)
C++ 没有String
类。但是有一个std::string
类涵盖了基本的字符串功能,并且被标准保证存在。要使用它,您需要#include <string>
.
如果您发现自己需要比 中提供的更多功能std::string
,您可以随时添加对字符串进行操作的免费函数。还有第三方字符串实现(MS's CString
, RogueWave's RWCstring
),但如果你只是做一些基本的事情,我个人认为它们不是很有用。
标准库的std::string
类缺少字符串类中常见的许多功能,包括拆分字符串、匹配正则表达式、转换为整数等。我认为完全重写std::string
类不是一个好主意(除非它与您的根本不兼容)需要),但是将类子std::string
类化以提供其中一些功能会很好。
出于某些原因,您可能想要创建自己的字符串类,例如,您可能想要创建一个不可变的字符串类,其函数针对创建新的派生字符串而不是修改现有字符串进行了优化,因为它们有时可以更好地处理大量多线程代码。但是,如果您正在阅读一本初学者的书,这当然不是您需要做的事情,并且可能至少应该重新考虑三遍。
正如人们所说,std::string 用于 99.9% 的事情。