wchar_t
یک نوع دادهی اولیه است که در هستهی اصلی زبان C++
قرار نداره. یعنی جزو الزاماتی که هر پیادهسازی از C++
باید حتماً داشته باشه نیست.
البته در استاندارد C++11
دیگه موجود هست.
با این هدف ایجاد شده که بزرگترین میدان انواع کاراکترهای تعریف شده رو قبول کنه. یعنی مثلاً اگه یه مجموعهی کاراکتر استاندارد داریم که از ۱۶ بایت هم بیشتر کاراکتر قبو میکنه wchar_t
طوری پیاده میشه که ۳۲ بیت باشه.
به زبان ساده برای کار کردن به کاراکترهایی بزرگتر از اسکی یعنی یونیکد طراحی شده. یه نمونهی استفادهش کاراکترهای زبانهای دیگه غیر از انگلیسی هست. کاراکترهای انگلیسی به همراه اعداد انگلیسی و چند کاراکتر دیگه در اسکی تعریف شده هستند و بنابراین زبان انگلیسی با نوع دادهی char
مشکلی نداره. اما اگه بخوایم با کاراکترهایی علاوه بر اسکی کار کنیم char
کار ما رو پیس نمیبره.
اولین مشکل کار با char
این هست که ۱ بایت (معمولاً ۸ بیت) بیشتر نیست و بنابراین نمیشه تعداد زیادی کاراکتر رو پوشش بده. برای غلبه بر این مشکل یونیکد طراحی شده و برای استفاده از یونیکد در C++
کاراکتر گسترده (wchar_t
) تعریف شده.
هیچ پژوهش انسانی نمیتواند ادعای علمی بودن داشته باشد، مگر اینکه از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)