C ++ wcstof () - Стандартна бібліотека C ++

Функція wcstof () в C ++ інтерпретує вміст широкого рядка як число з плаваючою комою і повертає його значення як плаваюче.

Ця функція також встановлює покажчик, який вказує на перший широкий символ після останнього дійсного символу широкого рядка, якщо такий є, інакше вказівник встановлюється як нульовий.

Це визначається у файлі заголовка.

прототип wcstof ()

 плаваючий wcstof (const wchar_t * str, wchar_t ** str_end);

Функція wcstof () приймає в якості параметра широкий рядок і вказівник на широкий символ, інтерпретує вміст широкого рядка як число з плаваючою комою і повертає плаваюче значення.

Параметри wcstof ()

  • str: Широкий рядок, що представляє число з плаваючою комою.
  • str_end: вказівник на вказівник на широкий символ. Значення str_end встановлюється функцією для наступного символу в str після останнього дійсного символу. Цей параметр також може бути нульовим покажчиком.

wcstof () Повернене значення

Функція wcstof () повертає:

  • плаваюче значення (яке перетворюється із широкого рядка).
  • 0.0, якщо не вдалося виконати дійсне перетворення.

Якщо перетворене значення виходить за межі діапазону, виникає помилка діапазону і повертається позитивний або від’ємний HUGE_VAL .

Приклад 1: Як працює функція wcstof ()?

 #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; )

Коли ви запускаєте програму, результат буде:

 Широкий рядок = 40.001∏c12 Значення плаваючої позиції = 40.001 Кінцевий рядок = ∏c12

Приклад 2: функція wcstof () без кінцевих символів

 #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; )

Коли ви запускаєте програму, результат буде:

 Широкий рядок = 791.513 Значення плаваючої позиції = 791.513 Кінцевий рядок =

Дійсне значення з плаваючою комою для функції wcstof () складається з необов’язкового знака + або -, за яким слідує один із наступних наборів:

  • Для десяткового значення з плаваючою комою :
    • Група десяткових цифр (0-9), за бажанням містить десяткову крапку (.). Наприклад: 13.170, -5.63 тощо.
    • Необов’язкова експонента (e або E), за якою слідує необов’язковий знак + або - та непуста послідовність десяткових цифр. Наприклад: 3.46101e + 007, 13.19e-013 тощо.
  • Для шістнадцяткового значення з плаваючою комою :
    • Рядок, що починається з 0x або 0X, а потім непуста послідовність шістнадцяткових цифр, за бажанням містить десяткову крапку (.). Наприклад: 0xfa5, -0xb1f.24 тощо.
    • Необов’язкова частина показника (p або P), за якою слідує необов’язковий знак + або - та непуста послідовність шістнадцяткових цифр. Наприклад: 0x51c.23p5, -0x2a.3p-3 тощо.
  • Нескінченність :
    • INF або INFINITY (ігноруючи регістр). Наприклад: -Inf, InfiNiTy тощо.
  • NaN (не число) :
    • Послідовність NAN або NAN (ігноруючи регістр), де послідовність - це послідовність символів, що складається лише з буквено-цифрових символів або символу підкреслення (_). Результатом є тихий NaN. Наприклад: Nan, NaNab1 тощо.

Приклад 3: Як wcstof () працює з експонентами та шістнадцятковими числами?

 #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; )

Коли ви запускаєте програму, результат буде:

 Wide String = 39.119e + 2xx ઓ Float value = 3911.9 End String = xx ઓ Wide String = 0Xf1.23cØa1 Float value = 241.14 End String = Øa1

Приклад 4: випадки wcstof для INFINITY та 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; )

Коли ви запускаєте програму, результат буде:

 Широкий рядок = -inFinityxΣy Значення плаваючого = -inf Кінцевий рядок = xΣy Широкий рядок = NaN11Щ Значення плаваючого = nan Кінцевий рядок = 11Щ

Загалом, дійсний аргумент з плаваючою комою для функції wcstof () має такий вигляд:

 (пробіли) (- | +) (цифри) (.знаки) ((e | E) (- | +) цифри)

Функція wcstof () ігнорує всі провідні пробіли, поки не буде знайдено основний непробіл.

Потім, починаючи з цього символу, потрібно якомога більше символів, які формують дійсне подання з плаваючою точкою і перетворюють їх у значення з плаваючою точкою. Все, що залишилось від рядка після останнього дійсного символу, зберігається в об'єкті, на який вказує str_end.

Приклад 5: Функція wcstof () з пробілами, що ведуть

 #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; )

Коли ви запускаєте програму, результат буде:

 Широкий рядок = 21,69Ӹaa Значення плаваючої позиції = 21,69 Кінцевий рядок = Ӹaa

Цікаві статті...