2009-01-29 29 views
3

我一直在学习C++和一些来自80年代的书籍,我不确定它们是C++中的字符串还是非常长的char类型数组。谁能帮忙?C++中有字符串?

回答

11

查看标准库。

在STL中,您可以找到std :: string类以及一堆其他有用的类。

基本的文档可以在这里找到:

http://www.sgi.com/tech/stl/

字符串的文件可以在这里找到:

http://www.sgi.com/tech/stl/basic_string.html

这些STL字符串的美妙之处在于,他们删除自己;所以一旦你宣布他们,你可以让他们离开,他们会处理他们自己的记忆。对于其他stl类也是如此(当然,如果你声明一个指针向量,向量将被删除,但指针指向的内存也必须被处理;它不是一个完全灵丹妙药,但它很好地工作如果你记住这个限制)。

最后,我发现这本书是学习如何在STL认为一个真正的好办法:

Effective STL

6

是的,在C++中有字符串,有人走了,完成了所有的工作并为你编码。它们不是实际的语言,而是一个名为标准模板库的库,实际上它总是随C++编译器一起提供(您可能已经拥有这些库)。在内部它们用一个char数组表示,但是它是以一种特殊的方式来完成的,所以如果字符串变大,它会丢弃小的char数组并创建一个新的更大的数组。

你应该真的得到一本新书!

2

@mmr指出C++有一个std :: string。除此之外,几乎所有的类库/框架/工具包都提供了(至少)一个 它自己的。除此之外,几乎每个大型C++项目都会有一个改进,其中包括 一个String库。

所有这些都是必要的,因为没有单一的尺寸适合所有。一些想要的数据复制懒, 一些希望快速插入中间等,有的要UTF-8等。

在所有的可能性,如果项目是否任何严重的字符串操作,你最终会 写一个你自己。

0

在C++中;一个null结束的char数组是一个字符串。尽管如此,像许多其他人已经指出的那样,各种库也有一个字符串类来处理常见的字符串操作功能。