cuốn sách gpt4 ai đã làm

c++ - bộ ký tự - không rõ ràng

In lại Tác giả: Hồ Xil Thời gian cập nhật: 2023-11-01 15:48:00 27 4
mua khóa gpt4 Nike

Tiêu chuẩn này xác định

  • bộ ký tự nguồn cơ bản
  • Bộ ký tự thực thi cơ bản và các ký tự rộng tương ứng của nó

  • Nó cũng định nghĩa "bộ ký tự thực thi" và các ký tự rộng tương ứng của nó như sau

    $2,2/3- "Bộ ký tự thực thi và bộ ký tự rộng thực thi lần lượt là các siêu bộ của bộ ký tự thực thi cơ bản và bộ ký tự rộng thực thi cơ bản. Các giá trị của các thành viên của bộ ký tự thực thi là triển khai- được xác định và mọi thành viên bổ sung đều dành riêng cho từng địa phương."



    quý đầu tiên. Tôi không nghĩ mình hiểu hết điều này, đặc biệt là câu cuối cùng. Có gợi ý nào về điều này không?

    此外,

    $3.9.1 - "Các đối tượng được khai báo là ký tự (char) phải đủ lớn để lưu trữ bất kỳ thành viên nào trong bộ ký tự cơ bản của quá trình triển khai."



    Q2. Cụm từ "bộ ký tự cơ bản" trong 3.9.1 có nghĩa là "bộ ký tự thực thi cơ bản" không?

    câu trả lời hay nhất

    Bạn cần phân biệt giữa bộ ký tự nguồn, bộ ký tự thực thi, bộ ký tự thực thi dòng và phiên bản cơ sở của chúng:

    Bộ ký tự nguồn cơ bản:

    §2.1.1: Bộ ký tự nguồn cơ bản bao gồm 96 ký tự […]



    Bộ ký tự này có chính xác 96 ký tự. Chúng phù hợp với 7 bit. hình ảnh @Những ký tự như vậy không được bao gồm.

    Hãy lấy một số biểu diễn nhị phân ví dụ cho một số ký tự nguồn cơ bản. Chúng có thể hoàn toàn tùy ý, không cần những giá trị này phải tương ứng với các giá trị ASCII.
    A -> 0000000
    B -> 0100100
    C -> 0011101

    Bộ ký tự thực thi cơ bản...

    §2.1.3: Bộ ký tự thực thi cơ bản và bộ ký tự rộng thực thi cơ bản sẽ chứa tất cả các thành viên của bộ ký tự nguồn cơ bản, cộng với các ký tự điều khiển biểu thị cảnh báo, phím lùi và trả về đầu dòng, cộng với một ký tự rỗng (tương ứng, ký tự rộng null), có biểu diễn tất cả các bit bằng 0.



    Như đã đề cập trước đó, bộ ký tự thực thi cơ bản chứa tất cả các thành viên của bộ ký tự nguồn cơ bản. Nó vẫn không chứa bất kỳ ký tự nào khác như @ .Bộ ký tự thực thi cơ bản có thể có các biểu diễn nhị phân khác nhau.

    Như đã đề cập trước đó, bộ ký tự thực thi cơ bản chứa các biểu diễn trả về đầu dòng, ký tự null và các ký tự khác.
    A -> 10110101010
    B -> 00001000101 <- bộ ký tự nguồn cơ bản
    C -> 10101011111
    -------------------------------------------------- --------
    null -> 00000000000
    Phím lùi -> 11111100011

    Nếu độ dài bộ ký tự thực thi cơ sở là 11 bit (như trong ví dụ này), thì kiểu dữ liệu char phải đủ lớn để lưu trữ 11 bit, nhưng có thể dài hơn.

    ...và về cơ bản thực hiện các bộ ký tự rộng:

    Việc triển khai cơ bản các ký tự rộng là dành cho các ký tự rộng (wchar_t). Về cơ bản, nó giống như bộ ký tự rộng triển khai cơ bản, nhưng cũng có thể có các cách biểu diễn nhị phân khác nhau.
    A -> 1011010101010110101010
    B -> 0000100010110101011111 <- bộ ký tự nguồn cơ bản
    C -> 1010100101101000011011
    -------------------------------------------------- -------------------
    null -> 0000000000000000000000
    Phím lùi -> 1111110001100000000001

    Thành viên cố định duy nhất là ký tự null, cần được 0 các bit tuần tự.

    Chuyển đổi giữa các bộ ký tự cơ bản:

    §2.1.1.5: Mỗi thành viên của bộ ký tự nguồn, chuỗi thoát hoặc tên ký tự phổ quát trong các ký tự chữ và chuỗi ký tự được chuyển đổi thành một thành viên của bộ ký tự thực thi (2.13.2, 2.13.4).



    Sau đó biên dịch tệp nguồn C++ để chuyển đổi từng ký tự của bộ ký tự nguồn thành bộ ký tự thực thi cơ bản (rộng).

    Ví dụ:
    const char* string0 = "BA\bC";
    const wchar_t string1 = L"BA\bC";

    từ chuỗi0là các ký tự thông thường sẽ được chuyển đổi thành bộ ký tự thực thi cơ bản và chuỗi1Chuyển đổi sang bộ ký tự rộng thực thi cơ bản.
    chuỗi0 -> 00001000101 10110101010 11111100011 10101011111
    chuỗi1 -> 0000100010110101011111 1011010101010110101010 // tiếp tục
    11111100011000000000001 1010100101101000011011

    Về mã hóa tập tin:

    Có một số mã hóa tập tin. Ví dụ ASCII Cái này dài 7 bit. Windows-1252 Nó dài 8 bit (được gọi là ANSI ). ASCIIKhông chứa các ký tự không phải tiếng Anh. ANSIChứa một số ký tự châu Âu như ä Ö ä Õ ø .

    Mã hóa tập tin mới hơn như UTF-8 hoặc UTF-32 Có thể chứa các ký tự từ bất kỳ ngôn ngữ nào. UTF-8Độ dài ký tự có thể thay đổi. UTF-32dài 32 ký tự.

    Yêu cầu mã hóa tập tin:

    Hầu hết các trình biên dịch đều cung cấp các chuyển đổi dòng lệnh để chỉ định mã hóa tệp của tệp nguồn.

    Các tệp nguồn C++ cần được mã hóa bằng mã hóa tệp có biểu diễn bộ ký tự nguồn cơ sở. Ví dụ: mã hóa tệp của tệp nguồn cần phải là ;Biểu thị tính chất.

    Nếu bạn có thể nhập ký tự ;Trong mã hóa được chọn làm mã hóa tệp nguồn, mã hóa không phù hợp làm mã hóa tệp nguồn c++.

    Bộ ký tự không cơ bản:

    Các ký tự không có trong bộ ký tự nguồn cơ bản sẽ thuộc về bộ ký tự nguồn. Bộ ký tự nguồn tương đương với mã hóa tệp.

    Ví dụ: @Ký tự này không có trong các ký tự nguồn cơ bản nhưng nó có thể có trong bộ ký tự nguồn. Mã hóa tập tin đã chọn của tập tin nguồn đầu vào có thể chứa @ đại diện. .nếu nó không chứa @ có nghĩa là bạn không thể sử dụng ký tự @trong chuỗi.

    Các ký tự không có trong bộ ký tự cơ bản (rộng) thuộc về bộ ký tự điều hành (rộng).

    Hãy nhớ rằng trình biên dịch chuyển đổi các ký tự từ bộ ký tự nguồn sang bộ ký tự thực thi và bộ ký tự rộng thực thi. Vì vậy cần phải có cách chuyển đổi các ký tự này.

    Ví dụ: nếu bạn chỉ định Windows-1252Khi mã hóa bộ ký tự nguồn và chỉ định ASCIILà bộ ký tự rộng triển khai, chuỗi này không thể được chuyển đổi:
    const char* string0 = "chuỗi ký tự châu Âu ö, Ä, ô, Ð.";

    Những ký tự này không thể được sử dụng ASCII thể hiện.

    Chỉ định bộ ký tự:

    Dưới đây là một số ví dụ về cách chỉ định bộ ký tự bằng gcc. Bao gồm các giá trị mặc định.
    -finput-charset=UTF-8 <- bộ ký tự nguồn
    -fexec-charset=UTF-8 <- bộ ký tự thực thi
    -fwide-exec-charset=UTF-32 <- bộ ký tự rộng thực thi

    Sử dụng UTF-8 và UTF-32 làm mã hóa mặc định, các tệp nguồn C++ có thể chứa các chuỗi có ký tự ở bất kỳ ngôn ngữ nào. Các ký tự UTF-8 có thể được chuyển đổi theo cả hai hướng mà không gặp vấn đề gì.

    Bộ ký tự mở rộng:

    §1.1.3: ký tự nhiều byte, một chuỗi gồm một hoặc nhiều byte đại diện cho một thành viên của bộ ký tự mở rộng của nguồn hoặc môi trường thực thi. Bộ ký tự mở rộng là siêu bộ của bộ ký tự cơ bản (2.2).



    Các ký tự nhiều byte dài hơn các mục dành cho ký tự thông thường. Chúng chứa một chuỗi thoát đánh dấu chúng là các ký tự nhiều byte.

    Các ký tự nhiều byte được xử lý theo ngôn ngữ được đặt trong môi trường thời gian chạy của người dùng. Các ký tự nhiều byte này được chuyển đổi trong thời gian chạy thành bộ mã hóa trong môi trường của người dùng.

    Về c++ - bộ ký tự - không rõ ràng, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/3768363/

    27 4 0
    Chứng chỉ ICP Bắc Kinh số 000000
    Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
    Xem sitemap của VNExpress