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

Hàm wcstod () 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 kép.

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

 double wcstod (const wchar_t * str, wchar_t ** str_end);

Hàm wcstod () 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ị kép.

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

wcstod () Giá trị trả về

Hàm wcstod () trả về:

  • một giá trị kép (đượ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 wcstod () 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"83.201xzu0496u0687"; wchar_t *end; double value; value = wcstod(str,&end); wcout << L"Wide String = " << str << endl; wcout << L"Double 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 = 83.201xzҖ ڇ Giá trị nhân đôi = 83.201 Chuỗi kết thúc = xzҖ ڇ

Ví dụ 2: Hàm wcstod () 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"83.201"; wchar_t *end; double value; value = wcstod(str,&end); wcout << L"Wide String = " << str << endl; wcout << L"Double 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 = 83.201 Giá trị nhân đôi = 83.201 Chuỗi kết thúc =

Giá trị dấu phẩy động hợp lệ cho hàm wcstod () 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 wcstod () 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"-136.31e-2Endu03c8"; wchar_t str2() = L"0x11a.2cu05ea"; wchar_t *end; double value; value = wcstod(str1,&end); wcout << L"Wide String = " << str1 << endl; wcout << L"Double value = " << value << endl; wcout << L"End String = " << end << endl; value = wcstod(str2,&end); wcout << L"Wide String = " << str2 << endl; wcout << L"Double 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 = -136,31e-2Endψ Giá trị kép = -1.3631 Chuỗi cuối = Chuỗi cuốiψ Chuỗi rộng = 0x11a.2c ת Giá trị kép = 282.172 Chuỗi cuối = ת

Ví dụ 4: Trường hợp wcstod 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; double value; value = wcstod(str1,&end); wcout << L"Wide String = " << str1 << endl; wcout << L"Double value = " << value << endl; wcout << L"End String = " << end << endl; value = wcstod(str2,&end); wcout << L"Wide String = " << str2 << endl; wcout << L"Double 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ị gấp đôi = -inf Kết thúc Chuỗi = xΣy Chuỗi rộng = NaN11Щ Giá trị kép = nan Kết thúc Chuỗi = 11

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

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

Hàm wcstod () 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 wcstod () 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; double value; value = wcstod(str,&end); wcout << L"Wide String = " << str << endl; wcout << L"Double 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ị kép = 21,69 Chuỗi cuối = Ӹaa

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