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

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

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

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

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

 флоат вцстоф (цонст вцхар_т * стр, вцхар_т ** стр_енд);

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

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

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

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

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

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

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

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

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str() = L"40.001u220fc12"; wchar_t *end; float value; value = wcstof(str,&end); wcout << L"Wide String = " << str << endl; wcout << L"Float value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

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

 Широки низ = 40.001∏ц12 Флоат вредност = 40.001 Крајњи низ = ∏ц12

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

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str() = L"791.513"; wchar_t *end; float value; value = wcstof(str,&end); wcout << L"Wide String = " << str << endl; wcout << L"Float value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

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

 Широки низ = 791.513 Флоат вредност = 791.513 Крајњи низ =

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

  • За децималну вредност са покретном зарезом :
    • Група децималних цифара (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"39.119e+2xxu0a93"; wchar_t str2() = L"0Xf1.23cu00d8a1"; wchar_t *end; float value; value = wcstof(str1,&end); wcout << L"Wide String = " << str1 << endl; wcout << L"Float value = " << value << endl; wcout << L"End String = " << end << endl; value = wcstof(str2,&end); wcout << L"Wide String = " << str2 << endl; wcout << L"Float value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

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

 Широки низ = 39.119е + 2кк валуе Флоат вредност = 3911.9 Крајњи низ = кк ઓ Широки низ = 0Ксф1.23цØа1 Флоат вредност = 241.14 Крајњи низ = Øа1

Пример 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; float value; value = wcstof(str1,&end); wcout << L"Wide String = " << str1 << endl; wcout << L"Float value = " << value << endl; wcout << L"End String = " << end << endl; value = wcstof(str2,&end); wcout << L"Wide String = " << str2 << endl; wcout << L"Float 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; float value; value = wcstof(str,&end); wcout << L"Wide String = " << str << endl; wcout << L"Float value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

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

 Широки низ = 21,69Ыаа Флоат вредност = 21,69 Крајњи низ = Ыаа

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