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

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

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

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

прототип wcstold ()

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

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

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

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

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

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

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

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

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

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str() = L"93.410u03b7u05ea"; wchar_t *end; long double value; value = wcstold(str,&end); wcout << L"Wide String = " << str << endl; wcout << L"Long Double value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

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

 Широкий рядок = 93.410η ת Довге подвійне значення = 93.41 Кінцевий рядок = η ת

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

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str() = L"93.410"; wchar_t *end; long double value; value = wcstold(str,&end); wcout << L"Wide String = " << str << endl; wcout << L"Long Double value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

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

 Широкий рядок = 93,410 Довге подвійне значення = 93,41 Кінцевий рядок =

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

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

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str1() = L"34.901u00c6u00f1"; wchar_t str2() = L"0Xfc1.a12u03c7r12"; wchar_t *end; long double value; value = wcstold(str1,&end); wcout << L"Wide String = " << str1 << endl; wcout << L"Long Double value = " << value << endl; wcout << L"End String = " << end << endl; value = wcstold(str2,&end); wcout << L"Wide String = " << str2 << endl; wcout << L"Long Double value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

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

 Wide String = 34.901Æñ Long Double value = 34.901 End String = Æñ Wide String = 0Xfc1.a12χr12 Long Double value = 4033.63 End String = χr12

Приклад 4: Випадок випадків для нескінченності та 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"NaN22u0429"; wchar_t *end; long double value; value = wcstold(str1,&end); wcout << L"Wide String = " << str1 << endl; wcout << L"Long Double value = " << value << endl; wcout << L"End String = " << end << endl; value = wcstold(str2,&end); wcout << L"Wide String = " << str2 << endl; wcout << L"Long Double value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

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

 Wide String = inFinityxΣy Long Double value = inf End String = xΣy Wide String = NaN22Щ Long Double value = nan End String = 22Щ

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

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

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

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

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

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str() = L" 59.013u0915u0975"; wchar_t *end; long double value; value = wcstold(str,&end); wcout << L"Wide String = " << str << endl; wcout << L"Long Double value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

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

 Широкий рядок = 59,013 कॵ Довге подвійне значення = 59,013 Кінцевий рядок = कॵ

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