什么更好:包括字符串类或使用字符数组?

时间:2011-12-30 21:10:54

标签: c++

例如我有200个类的项目(200个标题和200个编译单元), 每个我的类都有成员,其中包含一些字符串,这意味着我必须将STL中的字符串标题包含在每个标题中。

从另一方面来看,我知道在编译单元中我不需要大多数字符串类功能(它是metods等)。 这意味着我的每个编译单元都包含整个字符串类,但我需要的只是关键字“string”。

编译需要更长的时间!我将编译字符串类200次!

在这种情况下,更好的是使用char关键字或制作一些自定义的字符串类,它不会像字符串类那么大吗?

感谢。

4 个答案:

答案 0 :(得分:5)

首先,现代IDE可以使用预编译头来避免此问题。其次,仅包括<string>的200个TU的成本可以忽略不计。第三,想象一下令人难以置信的时间,你将不得不处理双删除,内存泄漏等等,以及strlen的算法成本为O(n)和那种一团糟。

与不使用此类技术的费用相比,<string>等中等标头的编译时间免费

哦,如果你真的不需要它的实际功能,你可以转发声明。

答案 1 :(得分:4)

你真的应该使用std :: string,原因很多:

  • 使用c-strings编写安全的安全代码很困难,但使用std :: string
  • 会更容易
  • 与正常项目的总编译时间相比,编译<string>所需的时间很短
  • 你真的要担心编译字符串标题所花费的时间,你总是可以开始使用预编译的标题
  • 当你使用std :: string
  • 时,你会获得许多用于免费操作和搜索字符串的函数
  • 如果你不使用std库
  • ,你真的不会写c ++

答案 2 :(得分:0)

200个编译单元听起来不像是一个大项目 - 我不会为此过多的汗水。

答案 3 :(得分:0)

只有你可以决定它是否值得。但是你应该知道最大的大型应用程序充分利用std::string,所以我怀疑它是否值得牺牲它以支持编译时间。不要低估坚持std::string的好处,并习惯于编译速度慢的C ++。从大局来看,有200个班级很小。