C ++ wcstoul () - Thư viện chuẩn C ++

Hàm wcstoul () trong C ++ diễn giải nội dung của một chuỗi rộng là một số tích phân không dấu của cơ sở được chỉ định và trả về giá trị của nó dưới dạng một int dài không dấu.

Hàm wcstoul () cũng đặt một con trỏ trỏ đến ký tự đầu tiên sau ký tự hợp lệ cuối cùng của chuỗi rộng nếu có, nếu không thì con trỏ được đặt thành null.

 Đối với cơ số 10 và chuỗi rộng L "29hi $" Phần số hợp lệ -> 29 Ký tự đầu tiên sau phần số hợp lệ -> h

Nó được định nghĩa trong tệp tiêu đề.

nguyên mẫu wcstoul ()

 unsigned long wcstoul (const wchar_t * str, wchar_t ** str_end, int base);

Hàm wcstoul () nhận một chuỗi rộng str, một con trỏ đến ký tự rộng str_end và một giá trị số nguyên - cơ sở làm tham số của nó.

Sau đó, nó diễn giải nội dung của chuỗi rộng là một số tích phân không có dấu của cơ sở đã cho và trả về giá trị int dài không dấu.

wcstoul () Tham số

  • str: Một chuỗi rộng có biểu diễn một số tích phân không dấu.
  • str_end: Một con trỏ trỏ tới một ký tự rộng. Giá trị của str_end được hàm đặt thành ký tự tiếp theo trong str sau ký tự hợp lệ cuối cùng. Tham số này cũng có thể là một con trỏ null, trong trường hợp đó nó không được sử dụng.
  • base: Cơ sở của giá trị tích phân. Tập hợp các giá trị hợp lệ cho cơ sở là (0, 2, 3,…, 35, 36).

wcstoul () Giá trị trả về

Hàm wcstoul () trả về:

  • một giá trị int dài không dấu (được chuyển đổi từ chuỗi).
  • 0 nếu không thể thực hiện chuyển đổi hợp lệ.

Ví dụ 1: Hàm wcstoul () hoạt động như thế nào?

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str1() = L"101aau16b6"; wchar_t str2() = L"59"; wchar_t *end; unsigned long value; int base = 10; value = wcstoul(str1, &end, base); wcout << L"String value = " << str1 << endl; wcout << L"Unsigned Long Int value = " << value << endl; wcout << L"End String = " << end << endl; value = wcstoul(str2, &end, base); wcout << L"String value = " << str2 << endl; wcout << L"Unsigned Long Int value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

Khi bạn chạy chương trình, đầu ra sẽ là:

 Giá trị chuỗi = 101aa ᚶ Giá trị Int dài chưa ký = 101 Chuỗi kết thúc = aa ᚶ Giá trị chuỗi = 59 Giá trị Int dài chưa ký = 59 Chuỗi cuối =

Giá trị số nguyên hợp lệ cho hàm wcstoul () bao gồm:

  • Dấu + hoặc - tùy chọn.
  • Tiền tố 0 cho cơ số bát phân (chỉ áp dụng khi cơ số = 8 hoặc 0).
  • Tiền tố 0x hoặc 0X cho cơ số thập lục phân (chỉ áp dụng khi cơ số = 16 hoặc 0).
  • Một dãy chữ số và / hoặc bảng chữ cái (nếu cơ số lớn hơn 10).

Nếu đối số có chứa dấu trừ (-) ở đầu, thì số âm được chuyển đổi hoàn toàn thành kiểu int dài không dấu là một số dương.

Các giá trị hợp lệ cho cơ sở tham số là (0, 2, 3,…, 35, 36). Tập hợp các chữ số hợp lệ cho cơ số 2 là (0, 1), cho cơ số 3 là (0, 1, 2), v.v. Đối với các cơ sở bắt đầu từ 11 đến 36, các chữ số hợp lệ bao gồm các bảng chữ cái.

Tập hợp các chữ số hợp lệ cho cơ số 11 là (0, 1,…, 9, A, a), cho cơ số 12 là (0, 1,…, 9, A, a, B, b), v.v.

Ví dụ 2: Hàm wcstoul () với các cơ số khác nhau

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t *end; wchar_t str() = L"311bzu03feu03ff"; wcout << str << L" to Unsigned Long Int with base-5 = " << wcstoul(str, &end, 5) << endl; wcout << L"End String = " << end << endl << endl; wcout << str << L" to Unsigned Long Int with base-12 = " << wcstoul(str, &end, 12) << endl; wcout << L"End String = " << end << endl << endl; wcout << str << L" to Unsigned Long Int with base-36 = " << wcstoul(str, &end, 36) << endl; wcout << L"End String = " << end << endl << endl; return 0; )

Khi bạn chạy chương trình, đầu ra sẽ là:

 311bzϾϿ thành Long Int không dấu với cơ số-5 = 81 Chuỗi kết thúc = bzϾϿ 311bzϾϿ thành Long Int không dấu với cơ số-12 = 5351 Chuỗi kết thúc = zϾϿ 311bzϾϿ thành Long Int không dấu với cơ số-36 = 5087231 Chuỗi cuối = ϾϿ

Hàm wcstoul () bỏ qua tất cả các ký tự khoảng trắng hàng đầu cho đến khi tìm thấy ký tự không phải khoảng trắng chính.

Nói chung, đối số số nguyên hợp lệ cho hàm wcstoul () có dạng sau:

 (khoảng trắng) (- | +) (0 | 0x) (ký tự chữ và số)

Sau đó, bắt đầu từ ký tự này, cần nhiều ký tự nhất có thể để tạo thành biểu diễn số nguyên hợp lệ và chuyển chúng thành giá trị int dài không dấu.

Bất cứ thứ gì còn lại của chuỗi sau ký tự hợp lệ cuối cùng sẽ bị bỏ qua và không ảnh hưởng đến kết quả.

Ví dụ 3: Hàm wcstoul () cho khoảng trắng ở đầu và chuyển đổi không hợp lệ

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t *end; wcout << L" 205u03e2x to Unsigned Long Int with base-5 = " << wcstoul(L" 205u03e2x", &end, 5) << endl; wcout << L"End String = " << end << endl << endl; wcout << L"xu019cz201 to Unsigned Long Int with base-12 = " << wcstoul(L"xu019cz201", &end, 12) << endl; wcout << L"End String = " << end << endl << endl; return 0; )

Khi bạn chạy chương trình, đầu ra sẽ là:

 205Ϣx thành Long Int không dấu với cơ số-5 = 10 Chuỗi kết thúc = 5Ϣx xƜz201 đến Long Int không dấu với cơ số-12 = 0 Chuỗi kết thúc = xƜz201

Nếu cơ số là 0, cơ số số được xác định tự động bằng cách xem định dạng của chuỗi. Nếu tiền tố là 0, cơ số là bát phân (8). Nếu tiền tố là 0x hoặc 0X, thì cơ số là thập lục phân (16), nếu không thì cơ số là thập phân (10).

Ví dụ 4: Hàm wcstoul () với cơ số 0

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t *end; wcout << L"0539u1e84 to Unsigned Long Int with base-0 = " << wcstoul(L"0539u1e84", &end, 0) << endl; wcout << L"End String = " << end << endl << endl; wcout << L"0xa31u05e2 to Unsigned Long Int with base-0 = " << wcstoul(L"0xa31u05e2", &end, 0) << endl; wcout << L"End String = " << end << endl << endl; wcout << L"119xu060f to Unsigned Long Int with base-0 = " << wcstoul(L"119xu060f", &end, 0) << endl; wcout << L"End String = " << end << endl << endl; return 0; )

Khi bạn chạy chương trình, đầu ra sẽ là:

 0539Ẅ thành Long Int không dấu với cơ số-0 = 43 Chuỗi kết thúc = 9Ẅ 0xa31 ע thành Long Int không dấu với cơ số-0 = 2609 Chuỗi kết thúc = ע 119x ؏ thành Long Int không dấu với cơ số-0 = 119 Chuỗi cuối = x ؏

thú vị bài viết...