string 是 basic_string<char, char_traits, allocator > 的别称,算严格意义上的类吗?
typedef basic_string<char, char_traits<char>, allocator<char> > string;
string 是 basic_string<char, char_traits, allocator > 的别称,算严格意义上的类吗?
typedef basic_string<char, char_traits<char>, allocator<char> > string;
关注
basic_string<
>
是std命名空间中的一个模板类,是C++标准库中用于表示字符串的类。它可以被认为是string类的一个别名。
在C++中,basic_string<
>
是一个字符串容器类模板,它定义了一系列操作用于处理和操作字符串。它提供了许多函数成员来操作和访问字符串中的字符。
basic_string<
>
的完整定义如下:
template <
class charT,class traits = std::char_traits<
charT>
,class Allocator = std::allocator<
charT>
>
class basic_string;
其中,charT表示字符串中的字符类型,traits是用于操作字符的特性类,Allocator是用于动态分配字符串内存的分配器类。通过这个模板参数的不同组合,可以定义不同类型的basic_string对象,比如basic_string、basic_string<
wchar_t>
等。
例如,可以定义一个basic_string对象来存储字符类型为char的字符串:
std::basic_string<
char>
str = "
Hello, World!"
;
由于basic_string<
>
是一个模板类,需要使用模板参数进行实例化,因此它是一个在严格意义上的类。
需要注意的是,typedef方式只是为了给basic_string<
>
提供一个更方便的别名,并不会创建新的类,只是起到了给已有类取一个别名的作用。