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