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

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

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

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

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

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

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

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

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

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

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

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

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

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

 #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: функција вцстолд () без пратећих знакова

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

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

  • За децималну вредност са покретном зарезом :
    • Група децималних цифара (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"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; )

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

 Широки низ = 34.901Ӕн Дуга двострука вредност = 34.901 Крајњи низ = Ӕн Широки низ = 0Ксфц1.а12χр12 Дугачка двострука вредност = 4033.63 Крајњи низ = χр12

Пример 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"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; )

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

 Широки низ = инФинитикΣи Лонг Доубле вредност = инф Крајњи низ = кΣи Широки низ = НаН22Щ Лонг Доубле вредност = нан Крајњи низ = 22Щ

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

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

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

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

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

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

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