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: wcstold случаи за 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"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 () има следната форма:

 (празно пространство) (- | +) (цифри) (.цифри) ((д | Е) (- | +) цифри)

Функцията 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 Краен низ = कॵ

Интересни статии...