این کد دقیقاً معادل کد سادهتر زیر هست
typedef std::basic_string<char> string;
هدف تعریف رشته به این صورت استفاده از قالبها برای پیادهسازی رشتههای مختلف هست.
میدونیم که در C++
نوع char
همیشه یک بایت هست اما مشخص نیست چند بیت. در C++
انواع char16_t
و char32_t
هم پیاده شده که اندازهی مشخص داره. علاوه بر اون برای استفاده از یونیکد کاراکتر گسترده یا wchar_t
هم وجود داره.
برای این که بشه رشتههای حاصل از این کاراکترها رو هم ساخت از شیوهی قالبی بالا استفاده شده تا به سادگی بشه کدهای زیر رو نوشت
typedef std::basic_string<char16_t> u16_string;
typedef std::basic_string<char32_t> u32_string;
typedef std::basic_string<wchar_t> wstring;
قالب تعریف رشته به شکل زیر هست
template<
class CharT,
class Traits = std::char_traits<CharT>,
class Allocator = std::allocator<CharT>
> class basic_string;
هیچ پژوهش انسانی نمیتواند ادعای علمی بودن داشته باشد، مگر اینکه از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)