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

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

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

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

прототип wcstod ()

 подвійний wcstod (const wchar_t * str, wchar_t ** str_end);

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

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

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

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

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

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

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

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

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

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

 Широкий рядок = 83.201xzҖ ڇ Подвійне значення = 83.201 Кінцевий рядок = xzҖ ڇ

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

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

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

 Широкий рядок = 83.201 Подвійне значення = 83.201 Кінцевий рядок =

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

  • Для десяткового значення з плаваючою комою :
    • Група десяткових цифр (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: Як wcstod () працює з експонентами та шістнадцятковими числами?

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

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

 Wide String = -136.31e-2Endψ Double value = -1.3631 End String = Endψ Wide String = 0x11a.2c ת Double value = 282.172 End String = ת

Приклад 4: Випадки wcstod для нескінченності та 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; )

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

 Широкий рядок = -inFinityxΣy Подвійне значення = -inf Кінцевий рядок = xΣy Широкий рядок = NaN11Щ Подвійне значення = nan Кінцевий рядок = 11Щ

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

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

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

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

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

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

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

 Широкий рядок = 21,69Ӹaa Подвійне значення = 21,69 Кінцевий рядок = Ӹaa

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