我正在阅读C ++教程书,作者说大多数C ++编译器包含一个String类库,但即使这样做,也建议创建自己的String类。不幸的是,作者没有说明原因。有人不同意/同意,为什么?
我正在使用Xcode,并且提供的String类对我来说似乎很好,但是再一次,我只使用它几个小时,所以我不知道这些限制。
提前致谢。
答案 0 :(得分:6)
听起来像你有一本旧书。
C ++标准库包含std::string
类,您应该使用它而不是发明自己的并修复已经在广泛使用的库中遇到并修复的错误。
由于你是初学者,是的,你应该开始实施自己的,因为它会教你很多。只是不要在任何“真正的”项目中使用它。
答案 1 :(得分:3)
C ++没有String
类。但是有一个std::string
类,它涵盖了基本的字符串功能,并且保证按标准存在。要使用它,您需要#include <string>
。
如果您发现自己需要的功能多于std::string
中提供的功能,则可以随时添加对字符串进行操作的自由函数。还有第三方字符串实现(MS的CString
,RogueWave的RWCstring
),但如果你只做基本的东西,我个人觉得它们没有用。
答案 2 :(得分:2)
建议您创建自己的String类
我相信作者建议您创建自己的String
课程,作为一项良好的编程练习来培养您的技能。
为实际的生产代码或非学术代码创建自己的String
类是荒谬的(至少可以说)
答案 3 :(得分:1)
标准库的std::string
类缺少字符串类中常见的许多工具,包括拆分字符串,与正则表达式匹配,转换为整数等。我不认为完全重写{是不是一个好主意{1}}类(除非它与您的需求根本不兼容),但是对std::string
类进行子类化以提供其中一些功能会很不错。
答案 4 :(得分:0)
您可能希望创建自己的字符串类有一些原因,例如,您可能希望创建一个不可变的字符串类,其中包含为创建新衍生字符串而优化的函数,而不是修改现有字符串,因为它们有时可以在多线程中运行得更好码。然而,如果你正在阅读一本初学者的书,这肯定不是你需要做的事情,而且至少应该重新考虑三次。
正如人们所说,std :: string是99.9%的东西。