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

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

Hàm wcstol () 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.

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

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

nguyên mẫu wcstol ()

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

Hàm wcstol () nhận một chuỗi rộng, một con trỏ đến ký tự rộng và một giá trị nguyên - cơ sở làm tham số của nó, diễn giải nội dung của chuỗi rộng dưới dạng số tích phân của cơ sở đã cho và trả về giá trị int dài.

wcstol () Tham số

  • str: Một chuỗi rộng có biểu diễn của một số tích phân.
  • 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).

wcstol () Giá trị trả về

Hàm wcstol () trả về:

  • một giá trị int dài (đượ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 wcstol () 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; long value; int base = 10; value = wcstol(str1, &end, base); wcout << L"String value = " << str1 << endl; wcout << L"Long Int value = " << value << endl; wcout << L"End String = " << end << endl; value = wcstol(str2, &end, base); wcout << L"String value = " << str2 << endl; wcout << L"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 = 101 Chuỗi cuối = aa ᚶ Giá trị chuỗi = 59 Giá trị Int dài = 59 Chuỗi cuối =

Giá trị số nguyên hợp lệ cho hàm wcstol () 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).

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 wcstol () 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 Long Int with base-5 = " << wcstol(str, &end, 5) << endl; wcout << L"End String = " << end << endl << endl; wcout << str << L" to Long Int with base-5 = " << wcstol(str, &end, 12) << endl; wcout << L"End String = " << end << endl << endl; wcout << str << L" to Long Int with base-5 = " << wcstol(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ϾϿ đến Long Int với cơ số-5 = 81 End String = bzϾϿ 311bzϾϿ đến Long Int với base-5 = 5351 End String = zϾϿ 311bzϾϿ Long Int với base-5 = 5087231 End String = ϾϿ

Hàm wcstol () 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 wcstol () 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 đổi chúng thành giá trị int dài. 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 wcstol () 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 Long Int with base-5 = " << wcstol(L" 205u03e2x", &end, 5) << endl; wcout << L"End String = " << end << endl << endl; wcout << L"xu019cz201 to Long Int with base-12 = " << wcstol(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 đến Long Int với cơ số-5 = 10 End String = 5Ϣx xƜz201 đến Long Int với base-12 = 0 End String = 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 wcstol () 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 Long Int with base-0 = " << wcstol(L"0539u1e84", &end, 0) << endl; wcout << L"End String = " << end << endl << endl; wcout << L"0xa31u05e2 to Long Int with base-0 = " << wcstol(L"0xa31u05e2", &end, 0) << endl; wcout << L"End String = " << end << endl << endl; wcout << L"119xu060f to Long Int with base-0 = " << wcstol(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Ẅ đến Long Int với cơ sở-0 = 43 End String = 9Ẅ 0xa31 ע Long Int với base-0 = 2609 End String = ע 119x ؏ Long Int với base-0 = 119 End String = x ؏

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