2012-11-22 37 views
6

Hôm nay tôi đã học được một số điều cơ bản về C++ và đã biết về wchar_t. Tôi đã không thể tìm ra, chúng ta sẽ cần loại dữ liệu này ở đâu?việc sử dụng wchar_t trong lập trình chung là gì?

+1

Được sử dụng khi 'char' không đủ, ví dụ khi sử dụng ký tự Unicode và chuỗi. –

+1

bạn sẽ cần nó, nếu bạn muốn làm việc với các ký tự tiếng Phạn trong chương trình của bạn, ví dụ –

+4

[một số người] (http://utf8everywhere.org/) nghĩ rằng bạn không nên sử dụng nó cả. – Ian

Trả lời

10

wchar_t được thiết kế để đại diện cho văn bản trong chiều rộng cố định, nhiều byte mã hóa; vì wchar_t thường có kích thước 2 byte, nó có thể được sử dụng để biểu diễn văn bản trong bất kỳ mã hóa 2 byte nào. Nó cũng có thể được sử dụng để đại diện cho văn bản trong biến chiều rộng mã hóa nhiều byte trong đó phổ biến nhất là UTF-16. Trên các nền tảng có kích thước 4 byte, nó có thể được sử dụng để đại diện cho bất kỳ văn bản nào sử dụng UCS-4 (Unicode), nhưng vì hầu hết các nền tảng chỉ có 2 byte, nó chỉ có thể biểu diễn Unicode trong một bảng mã có độ rộng biến đổi (thường là UTF-16). Việc sử dụng char phổ biến hơn với mã hóa có chiều rộng thay đổi, ví dụ: UTF-8 hoặc GB 18030.

Giới thiệu về hệ điều hành hiện đại chỉ sử dụng wchar_t rộng rãi là Windows; điều này là do Windows đã sử dụng Unicode trước khi nó được mở rộng qua U + FFFF và do đó mã hóa 2 byte có chiều rộng cố định (UCS-2) xuất hiện hợp lý. Bây giờ UCS-2 không đủ để đại diện cho toàn bộ Unicode và vì vậy Windows sử dụng UTF-16, vẫn còn với wchar_t đơn vị mã 2 byte.

3

wchar_t là ký tự rộng. Nó được sử dụng để đại diện cho các nhân vật đòi hỏi nhiều bộ nhớ hơn để đại diện cho chúng hơn là char thông thường. Đó là, ví dụ, được sử dụng rộng rãi trong Windows API.

Tuy nhiên, kích thước của wchar_t phụ thuộc vào việc triển khai và không được bảo đảm lớn hơn char. Nếu bạn cần hỗ trợ một dạng định dạng ký tự cụ thể lớn hơn 8 bit, bạn có thể muốn chuyển sang char32_tchar16_t được đảm bảo tương ứng là 32 và 16 bit.

1

Loại wchar_t được sử dụng cho các ký tự của các bộ ký tự mở rộng. Nó là một trong các ứng dụng khác được sử dụng với wstring là một chuỗi có thể chứa các ký tự đơn của các bộ ký tự mở rộng, trái ngược với chuỗi có thể chứa các ký tự đơn char size hoặc sử dụng nhiều ký tự đại diện cho một dấu đơn (như utf8)).

Kích thước wchar_t phụ thuộc vào ngôn ngữ và theo tiêu chuẩn được cho là có thể đại diện cho tất cả các thành viên của nhóm ký tự mở rộng lớn nhất được miền địa phương hỗ trợ.

3

Các wchar_t loại dữ liệu được sử dụng để hiển thị wide characters that will occupy 16 bits. Kiểu dữ liệu này chiếm "2 hoặc 4" byte.

Chủ yếu là loại dữ liệu wchar_t được sử dụng khi các ngôn ngữ quốc tế như tiếng Nhật được sử dụng.

3

wchar_t được sử dụng khi bạn cần lưu trữ các ký tự có mã lớn hơn 255 (có giá trị lớn hơn char có thể lưu trữ).

char có thể lấy 256 giá trị khác nhau tương ứng với các mục nhập trong bảng ISO Latin. Mặt khác, char rộng có thể mất hơn 65536 giá trị tương ứng với giá trị Unicode. Đây là một tiêu chuẩn quốc tế gần đây cho phép mã hóa các ký tự cho hầu như tất cả các ngôn ngữ và các biểu tượng thường được sử dụng.

+0

ASCII chỉ rộng 7 bit và các ký tự trên 127 không thuộc ASCII. Unicode chứa hơn 65536 ký tự và 'sizeof (wchar_t)' lớn hơn 2 trên nhiều nền tảng. Tôi đã sửa bài đăng của bạn. – clemens

+0

Có, tôi nhận được bạn, cảm ơn bạn rất nhiều. –

Các vấn đề liên quan