اولین بار است که به این وب‌سایت می‌آیید. راهنما را مطالعه کنید!
x
موسسه خیریه محک

شهر ریاضی بازی-ریاضی

رشته در C++ یعنی string دقیقاً چطوری تعریف شده؟

0 امتیاز
1,395 نمایش

تعریف رشته به صورت زیر هست

typedef std::basic_string<char, char_traits<char>, allocator<char>> string

اگه درست می‌گم کسی می‌تونه توضیح بده این چیه دقیقاً؟

هیچ پژوهش انسانی نمی‌تواند ادعای علمی بودن داشته باشد، مگر این‌که از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)
پرسیده شده دوشنبه ۱۲ فروردین ۱۳۹۲ در C++ توسط prodo  

1 پاسخ

0 امتیاز

این کد دقیقاً معادل کد ساده‌تر زیر هست

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;
هیچ پژوهش انسانی نمی‌تواند ادعای علمی بودن داشته باشد، مگر این‌که از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)
پاسخ داده شده جمعه ۷ تیر ۱۳۹۲ توسط prodo