C++ 中有字符串吗?

3

我一直在用学校80年代的一些书籍学习C++,但我不确定它们是否包含字符串或仅仅是由char类型组成的长数组。有人可以帮忙吗?

5个回答

17

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++中有字符串。有人已经为您完成了所有工作,并为您编写了代码。它们不在实际语言中,而是在称为标准模板库(STL)的库中,该库几乎总是随C++编译器一起提供(您可能已经拥有)。在内部,它们用一个char数组表示,但以特殊方式完成,因此如果字符串变得更大,则会丢弃小的char数组并创建一个新的、更大的数组。

你应该真的找一本更新的书!


2

正如@mmr所指出的那样,C++有一个std :: string。

除此之外,几乎每个类库/框架/工具包都提供了(至少)一个自己的字符串库。

除此之外,几乎每个大型c ++项目都会有一个String库。

所有这些都是必需的,因为没有一个大小适合所有。一些人希望惰性复制数据,一些人希望在中间快速插入等等,一些人希望UTF-8等等。

很有可能,如果你的项目进行任何严肃的字符串操作,你最终会编写自己的代码库。


0
在C++中,一个以null结尾的字符数组就是一个字符串。
话虽如此,正如许多人指出的那样,各种库也有字符串类来处理常见的字符串操作功能。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接