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

Hàm wcstoll () 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 số nguyên dài.

Hàm wcstoll () 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 con trỏ được đặt thành null.

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

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

nguyên mẫu wcstoll ()

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

Hàm wcstoll () 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 - base 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 của cơ sở đã cho và trả về giá trị int dài dài.

wcstoll () 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).

wcstoll () Giá trị trả về

Hàm wcstoll () trả về:

  • giá trị int dài 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 wcstoll () 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"41u0166u0124xx"; wchar_t str2() = L"127"; wchar_t *end; long long value; int base = 10; value = wcstoll(str1, &end, base); wcout << L"String value = " << str1 << endl; wcout << L"Long Long Int value = " << value << endl; wcout << L"End String = " << end << endl; value = wcstoll(str2, &end, base); wcout << L"String value = " << str2 << endl; wcout << L"Long 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 = 41ŦĤxx Giá trị Int dài dài = 41 Chuỗi cuối = ŦĤxx Giá trị chuỗi = 127 Giá trị Int dài dài = 127 Chuỗi cuối =

Giá trị số nguyên hợp lệ cho hàm wcstoll () 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 wcstoll () 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 Long Int with base-5 = " << wcstoll(str, &end, 5) << endl; wcout << L"End String = " << end << endl << endl; wcout << str << L" to Long Long Int with base-12 = " << wcstoll(str, &end, 12) << endl; wcout << L"End String = " << end << endl << endl; wcout << str << L" to Long Long Int with base-36 = " << wcstoll(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 Long Int với cơ số-5 = 81 End String = bzϾϿ 311bzϾϿ đến Long Long Int với base-12 = 5351 End String = zϾϿ 311bzϾϿ đến Long Long Int với cơ sở-36 = 5087231 End String = ϾϿ

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

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