C++中有字符串吗?

Posted

技术标签:

【中文标题】C++中有字符串吗?【英文标题】:There are Strings in C++? 【发布时间】:2009-01-29 03:38:07 【问题描述】:

我一直在通过一些 80 年代的学校书籍来学习 C++,但我不确定它们是 C++ 中的字符串还是只是很长的 char 类型数组。有人可以帮忙吗?

【问题讨论】:

【参考方案1】:

C++ 中有一个string 类。

【讨论】:

【参考方案2】:

查看标准库。

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

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

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

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

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

这些 stl 字符串的美妙之处在于它们会自行删除;所以一旦你声明了它们,你就可以放开它们,它们会处理自己的记忆。其他 stl 类也是如此(当然,如果您声明一个指针向量,该向量将被删除,但指针指向的内存也必须处理;它不是万能的,但它工作得很好如果您牢记这一限制)。

最后,我发现这本书是学习如何在 STL 中思考的好方法:

Effective STL

【讨论】:

【参考方案3】:

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

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

【讨论】:

【参考方案4】:

@mmr 指出,C++ 有一个 std::string。

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

除此之外,几乎每个您将要进行更改的大型 c++ 项目都会有 一个字符串库。

所有这些都是必需的,因为没有一种尺寸适合所有人。有些人想要懒惰地复制数据, 有些想要在中间快速插入等,有些想要 UTF-8 等。

很可能,如果您的项目进行了任何严重的字符串操作,您最终会 自己写一篇。

【讨论】:

【参考方案5】:

在 C++ 中;以 null 结尾的 char 数组是一个字符串。

话虽如此,就像许多其他人指出的那样,各种库也有一个字符串类来处理常见的字符串操作功能。

【讨论】:

以上是关于C++中有字符串吗?的主要内容,如果未能解决你的问题,请参考以下文章

C语言中有string吗?

c++流中有类似 C语言的sprintf函数的函数吗?

C++ 中有标准的日期/时间类吗?

在 C++ 中拆分字符串的最佳实践

为啥 C++ 中有这么多字符串类型?

使用 C++ 字符串数组中有多少个字符?