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

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

Функцията 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

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