Функцията wcstof () в C ++ интерпретира съдържанието на широк низ като число с плаваща запетая и връща стойността му като плувка.
Тази функция също така задава указател, който да сочи към първия широк символ след последния валиден символ от широкия низ, ако има такъв, в противен случай указателят е зададен за нула.
Той се определя в заглавния файл.
прототип на wcstof ()
плаващ wcstof (const wchar_t * str, wchar_t ** str_end);
Функцията wcstof () приема като параметър широк низ и указател към широк символ, интерпретира съдържанието на широкия низ като число с плаваща запетая и връща стойност с плаваща запетая.
wcstof () Параметри
- str: Широк низ, представящ число с плаваща запетая.
- str_end: Показалец към указател към широк символ. Стойността на str_end се задава от функцията на следващия символ в str след последния валиден символ. Този параметър може да бъде и нулев указател.
wcstof () Върната стойност
Функцията wcstof () връща:
- плаваща стойност (която се преобразува от широкия низ).
- 0.0, ако не може да се извърши валидно преобразуване.
Ако преобразуваната стойност е извън диапазона, възниква грешка в диапазона и се връща положителен или отрицателен HUGE_VAL .
Пример 1: Как работи функцията wcstof ()?
#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∏c12 Плаваща стойност = 40.001 Краен низ = ∏c12
Пример 2: функция wcstof () без последващи символи
#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 Краен низ =
Валидна стойност с плаваща запетая за функцията wcstof () се състои от незадължителен знак + или -, последван от един от следните набори:
- За десетична стойност с плаваща запетая :
- Група десетични цифри (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: Как wcstof () работи с експоненти и шестнадесетични числа?
#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; )
Когато стартирате програмата, изходът ще бъде:
Wide String = 39.119e + 2xx ઓ Float value = 3911.9 End String = xx ઓ Wide String = 0Xf1.23cØa1 Float value = 241.14 End String = Øa1
Пример 4: wcstof случаи за 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; 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; )
Когато стартирате програмата, изходът ще бъде:
Wide String = -inFinityxΣy Float value = -inf End String = xΣy Wide String = NaN11Щ Float value = nan End String = 11Щ
По принцип валиден аргумент с плаваща запетая за функцията wcstof () има следната форма:
(празно пространство) (- | +) (цифри) (.цифри) ((д | Е) (- | +) цифри)
Функцията wcstof () игнорира всички водещи символи за интервали, докато не бъде намерен основният символ, който не е интервал.
След това, започвайки от този знак, са необходими колкото се може повече символи, които формират валидно представяне с плаваща запетая и ги преобразуват в стойност с плаваща запетая. Всичко, което е останало от низа след последния валиден символ, се съхранява в обекта, посочен от str_end.
Пример 5: Функция wcstof () с водещо празно пространство
#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Ӹaa Плаваща стойност = 21.69 Краен низ = Ӹaa