Ц ++ вцстод () - Ц ++ стандардна библиотека

Функција вцстод () у језику Ц ++ тумачи садржај широког низа као број са покретном тачком и враћа његову вредност као двоструку.

Функција вцстод () такође поставља показивач да покаже на први широки знак након последњег важећег знака широког низа ако постоји, у супротном је показивач постављен на нулу.

Дефинисано је у заглављу датотеке.

прототип вцстод ()

 двоструки вцстод (цонст вцхар_т * стр, вцхар_т ** стр_енд);

Функција вцстод () узима параметар широки низ и показивач на широки знак, интерпретира садржај широког низа као број са покретном тачком и враћа двоструку вредност.

вцстод () Параметри

  • стр: Широки низ који представља број са покретном тачком.
  • стр_енд: Показивач на показивач на широк знак. Вредност стр_енд функција поставља на следећи знак у стр након последњег важећег знака. Овај параметар такође може бити нулти показивач.

вцстод () Повратна вредност

Функција вцстод () враћа:

  • двострука вредност (која се претвара из широког низа).
  • 0.0 ако није било могуће извршити ваљану конверзију.

Ако је претворена вредност ван опсега, јавља се грешка опсега и враћа се позитиван или негативан ХУГЕ_ВАЛ .

Пример 1: Како функционише функција вцстод ()?

 #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.201кзҖ ڇ Двострука вредност = 83.201 Крајњи низ = кзҖ ڇ

Пример 2: функција вцстод () без пратећих знакова

 #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 Крајњи низ =

Важећа вредност са помичном зарезом за функцију вцстод () састоји се од опционалног знака + или - иза којег следи један од следећих скупова:

  • За децималну вредност са покретном зарезом :
    • Група децималних цифара (0-9), која опционо садржи децималну тачку (.). На пример: 13.170, -5,63 итд.
    • Изборни експонентни део (е или Е) праћен необавезним знаком + или - и непразним низом децималних цифара. На пример: 3,46101е + 007, 13,19е-013 итд.
  • За хексадецималну вредност са покретном зарезом :
    • Низ који започиње са 0к или 0Кс, праћен непразним низом хексадецималних цифара, који опционо садрже децималну тачку (.). На пример: 0кфа5, -0кб1ф.24 итд.
    • Изборни експонентни део (п или П) праћен необавезним знаком + или - и непразним низом хексадецималних цифара. На пример: 0к51ц.23п5, -0к2а.3п-3 итд.
  • Инфинити :
    • ИНФ или ИНФИНИТИ (игноришући случај). На пример: -Инф, ИнфиНиТи итд.
  • НаН (није број) :
    • НАН или НАН секвенца (занемарујући случај) где је секвенца секвенца знакова која се састоји само од алфанумеричких знакова или доње црте (_). Резултат је тихи НаН. На пример: Нан, НаНаб1 итд.

Пример 3: Како вцстод () ради са експонентима и хексадецималима?

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

Када покренете програм, излаз ће бити:

 Широки низ = -136.31е-2Ендψ Двострука вредност = -1.3631 Крајњи низ = Крајψ Широки низ = 0к11а.2ц ת Двострука вредност = 282.172 Крајњи низ = ת

Пример 4: Случајеви вцстод за ИНФИНИТИ и НаН

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

Када покренете програм, излаз ће бити:

 Широки низ = -инФинитикΣи Двострука вредност = -инф Крајњи низ = кΣи Широки низ = НаН11Щ Двострука вредност = нан Крајњи низ = 11Щ

Генерално, важећи аргумент с помичном тачком за функцију вцстод () има следећи облик:

 (размак) (- | +) (цифре) (.цифре) ((е | Е) (- | +) цифре)

Функција вцстод () игнорише све водеће размаке све док се не пронађе примарни не-размак.

Затим, почев од овог знака, потребно је што више знакова који формирају важећу представу с помичном тачком и претварају их у вредност са помичном тачком. Шта год је остало од низа након последњег важећег знака, чува се у објекту на који показује стр_енд.

Пример 5: функција вцстод () са водећим размаком

 #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Ыаа Двострука вредност = 21,69 Крајњи низ = Ыаа

Занимљиви Чланци...