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

Hàm wcstof () trong C ++ diễn giải nội dung của một chuỗi rộng dưới dạng số dấu phẩy động và trả về giá trị của nó dưới dạng số thực.

Hàm này cũng đặt một con trỏ trỏ đến ký tự rộng đầ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.

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

nguyên mẫu wcstof ()

 float wcstof (const wchar_t * str, wchar_t ** str_end);

Hàm wcstof () lấy chuỗi rộng và một con trỏ đến ký tự rộng 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ố dấu phẩy động và trả về giá trị thực.

wcstof () Tham số

  • str: Một chuỗi rộng có biểu diễn một số dấu phẩy động.
  • str_end: 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.

wcstof () Giá trị trả về

Hàm wcstof () trả về:

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

Nếu giá trị được chuyển đổi nằm ngoài phạm vi, lỗi phạm vi sẽ xảy ra và trả về HUGE_VAL dương hoặc âm .

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

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str() = L"40.001u220fc12"; wchar_t *end; float value; value = wcstof(str,&end); wcout << L"Wide String = " << str << endl; wcout << L"Float value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

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

 Chuỗi rộng = 40,001∏c12 Giá trị nổi = 40,001 Chuỗi cuối = ∏c12

Ví dụ 2: Hàm wcstof () không có ký tự ở cuối

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str() = L"791.513"; wchar_t *end; float value; value = wcstof(str,&end); wcout << L"Wide String = " << str << endl; wcout << L"Float value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

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

 Chuỗi rộng = 791,513 Giá trị nổi = 791,513 Chuỗi cuối =

Giá trị dấu phẩy động hợp lệ cho hàm wcstof () bao gồm dấu + hoặc - tùy chọn theo sau là một trong các bộ sau:

  • Đối với giá trị dấu phẩy động thập phân :
    • Một nhóm các chữ số thập phân (0-9), tùy chọn có chứa một dấu thập phân (.). Ví dụ: 13.170, -5.63, v.v.
    • Một phần số mũ tùy chọn (e hoặc E) theo sau bởi một dấu + hoặc - tùy chọn và dãy chữ số thập phân không trống. Ví dụ: 3.46101e + 007, 13.19e-013, v.v.
  • Đối với giá trị dấu phẩy động thập lục phân :
    • Một chuỗi bắt đầu bằng 0x hoặc 0X, theo sau là một chuỗi các chữ số thập lục phân không rỗng, có tùy chọn chứa dấu thập phân (.). Ví dụ: 0xfa5, -0xb1f.24, v.v.
    • Một phần lũy thừa tùy chọn (p hoặc P) theo sau là một dấu + hoặc - tùy chọn và dãy chữ số thập lục phân không trống. Ví dụ: 0x51c.23p5, -0x2a.3p-3, v.v.
  • Vô cực :
    • INF hoặc INFINITY (bỏ qua trường hợp). Ví dụ: -Inf, InfiNiTy, v.v.
  • NaN (Không phải số) :
    • Trình tự NAN hoặc NAN (bỏ qua chữ hoa chữ thường) trong đó trình tự là một chuỗi các ký tự chỉ bao gồm các ký tự chữ và số hoặc dấu gạch dưới (_). Kết quả là NaN yên tĩnh. Ví dụ: Nan, NaNab1, v.v.

Ví dụ 3: Cách wcstof () hoạt động với số mũ và số thập lục phân?

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str1() = L"39.119e+2xxu0a93"; wchar_t str2() = L"0Xf1.23cu00d8a1"; wchar_t *end; float value; value = wcstof(str1,&end); wcout << L"Wide String = " << str1 << endl; wcout << L"Float value = " << value << endl; wcout << L"End String = " << end << endl; value = wcstof(str2,&end); wcout << L"Wide String = " << str2 << endl; wcout << L"Float value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

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

 Chuỗi rộng = 39.119e + 2xx ઓ Giá trị chuỗi nổi = 3911,9 Chuỗi kết thúc = xx ring Chuỗi rộng = 0Xf1.23cØa1 Giá trị chuỗi nổi = 241,14 Chuỗi cuối = Øa1

Ví dụ 4: wcstof các trường hợp cho INFINITY và NaN

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str1() = L"-inFinityxu03a3y"; wchar_t str2() = L"NaN11u0429"; wchar_t *end; float value; value = wcstof(str1,&end); wcout << L"Wide String = " << str1 << endl; wcout << L"Float value = " << value << endl; wcout << L"End String = " << end << endl; value = wcstof(str2,&end); wcout << L"Wide String = " << str2 << endl; wcout << L"Float value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

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

 Chuỗi rộng = -inFinityxΣy Giá trị nổi = -inf Kết thúc Chuỗi = xΣy Chuỗi rộng = NaN11N Giá trị nổi = nan Kết thúc Chuỗi = 11Щ

Nói chung, đối số dấu phẩy động hợp lệ cho hàm wcstof () có dạng sau:

 (khoảng trắng) (- | +) (chữ số) (.digits) ((e | E) (- | +) chữ số)

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

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 dấu phẩy động hợp lệ và chuyển đổi chúng thành giá trị dấu phẩy động. Bất cứ thứ gì còn lại của chuỗi sau khi ký tự hợp lệ cuối cùng được lưu trữ trong đối tượng được trỏ bởi str_end.

Ví dụ 5: Hàm wcstof () với khoảng trắng ở đầu

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str() = L" 21.69u04f8aa"; wchar_t *end; float value; value = wcstof(str,&end); wcout << L"Wide String = " << str << endl; wcout << L"Float value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

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

 Chuỗi rộng = 21,69Ӹaa Giá trị nổi = 21,69 Chuỗi cuối = Ӹaa

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