在C++
中,string
是内置数据类型吗?
感谢。
答案 0 :(得分:20)
您要使用的内置的定义是什么?是内置你有是的编译器工具集,它应该。它是由编译器专门处理的吗? no ,编译器将该类型视为任何用户定义的类型。请注意,相同的内容可能适用于大多数人会回答的许多其他语言是。
C ++委员会的一个重点是将核心语言保持在最低限度,并在库中提供尽可能多的功能。这有两个意图:核心语言更稳定,库可以重新实现,增强...而无需更改编译器核心。但更重要的是,您不需要特殊的编译器支持来处理大多数标准库,这一事实可确保核心语言在大多数情况下具有足够的表现力。
Simpler以否定的形式表示:如果语言需要特殊的编译器支持来实现std::string
,这意味着用户没有足够的能力在核心语言中表达或类似的概念。
答案 1 :(得分:9)
它不是原始的 - 也就是说,它不像int
,char
等那样“内置”。最接近的内置类似字符串的类型是char *
或char[]
,这是执行字符串内容的旧C方式,但即使这样也需要一堆库代码才能有效地使用。
相反,std::string
是标准库的一部分,它几乎存在于现有的每个C ++编译器中。您需要#include <string>
(或包含其他包含它的内容,但实际上您应该包含代码所指的内容)才能使用它。
答案 2 :(得分:7)
如果你在谈论std :: string,那就没有。
如果你在谈论字符数组,我猜你可以将它视为内置类型的数组。
答案 3 :(得分:3)
取决于您对内置的含义,但可能不是。 std::string
由标准库(以及C ++标准)定义,并且受到不同编译器的普遍支持,但它不是int
或char
等核心语言的一部分。
答案 4 :(得分:3)
没有
内置或“原始”类型可用于使用内置类型char
创建字符串生命功能。这与C中使用的实用函数一样。在C ++中,仍然有这个功能,但是添加了更直观的字符串使用方法。
string
类是std命名空间的一部分,是basic_string
模板类的实例化。它被定义为
typedef basic_string<char> string;
这是一个能够根据需要动态调整大小并且有许多成员函数充当实用程序的类。它还使用运算符重载,因此使用起来更直观。但是,此功能也意味着它在速度方面具有开销。
答案 5 :(得分:1)
可以内置,但不一定如此。
C ++标准库为其组件提供了文档化的接口。这可以作为库代码或编译器内置函数来实现。该标准没有说明应该如何实施。
当您使用#include <string>
时,您可以使用std :: string实现。这可能是因为编译器直接实现它,或者因为它链接到某些库代码。我们不确定,除非我们检查每个编译器。
没有一个已知的编译器选择使其成为内置类型,因为他们没有必要。纯库实现的性能显然已经足够好了。
答案 6 :(得分:0)
没有。它是标准库的一部分。
答案 7 :(得分:0)
绝对不是。 String是标准库中的一个类。 char * 或 char [] 是内置类型,但char,int,float,double,void,bool没有任何添加(作为指针,数组,符号或大小修饰符 - 无符号,长等)是基本类型。
答案 8 :(得分:0)
该字符串属于对象类型。 如果您正在朝着这个方向考虑,请与通过引用一起使用。
答案 9 :(得分:-1)
不,string是一个班级。
答案 10 :(得分:-3)
没有。有不同的元素(例如Microsoft Visual C ++),但char *是C ++表示字符串的方式。