4

我正在看一本 C++ 教程书,作者说大多数 C++ 编译器都包含一个 String 类库,但即使有,还是建议创建自己的 String 类。不幸的是,作者没有说明原因。有没有人不同意/同意,为什么?

我正在使用 Xcode 并且提供的 String 类对我来说似乎很好,但话又说回来,我只使用了几个小时,所以我不知道这些限制。

提前致谢。

4

5 回答 5

6

听起来你有一本旧书。

C++ 标准库包含std::string该类,您应该使用它,而不是自己发明并修复已在广泛使用的库中遇到和修复的错误。

由于您是初学者,是的,您应该尝试实施自己的方法,因为它会教给您很多东西。只是不要在任何“真实”项目中使用它。

于 2012-05-23T20:19:26.817 回答
3

建议创建自己的 String 类

我相信作者建议创建你自己的String类,作为一个很好的编程练习来培养你的技能。

String暗示为实际生产代码或非学术代码创建自己的类是荒谬的(至少可以说)

于 2012-05-23T20:19:35.087 回答
3

C++ 没有String类。但是有一个std::string类涵盖了基本的字符串功能,并且被标准保证存在。要使用它,您需要#include <string>.

如果您发现自己需要比 中提供的更多功能std::string,您可以随时添加对字符串进行操作的免费函数。还有第三方字符串实现(MS's CString, RogueWave's RWCstring),但如果你只是做一些基本的事情,我个人认为它们不是很有用。

于 2012-05-23T20:19:58.727 回答
1

标准库的std::string类缺少字符串类中常见的许多功能,包括拆分字符串、匹配正则表达式、转换为整数等。我认为完全重写std::string类不是一个好主意(除非它与您的根本不兼容)需要),但是将类子std::string类化以提供其中一些功能会很好。

于 2012-05-23T20:20:02.590 回答
0

出于某些原因,您可能想要创建自己的字符串类,例如,您可能想要创建一个不可变的字符串类,其函数针对创建新的派生字符串而不是修改现有字符串进行了优化,因为它们有时可以更好地处理大量多线程代码。但是,如果您正在阅读一本初学者的书,这当然不是您需要做的事情,并且可能至少应该重新考虑三遍。

正如人们所说,std::string 用于 99.9% 的事情。

于 2012-05-23T21:31:04.460 回答