В тази статия ще научите за функцията std::stol в C++ с нейния синтаксис и примери.
Какво е std::stol()?
The Стандартна библиотека с шаблони (STL) в C++ включва std::stol() функция, която е специално създадена за конвертиране низове до дълги цели числа . Тази функция е особено полезна при работа с въведени от потребителя данни или четене на данни от външни източници - където входът обикновено се дава във формат на низ. Той връща еквивалентното дълго цяло число след получаване на низ като вход. Изключение от тип std::invalid_argument или std::out_of_range се хвърля, ако преобразуването не е възможно или ако въведеният низ съдържа знаци, които не са част от валидно число.
Синтаксис:
Има следния синтаксис:
long std::stol(const std::string& str, size_t* pos = 0, int base = 10);
улица: Текстът, който трябва да бъде променен в дълго цяло число.
позиция: Индексът на първия непреобразуван символ на низа, съхранен като указател към обект size_t. Ако не се изисква, този незадължителен параметър може да бъде зададен на nullptr.
база: Числената база на преобразуването. Десет е по подразбиране.
списък на java
Върната стойност: Числовата стойност, която е анализирана от входния низ, се връща от функцията като дълго цяло число.
Изключения: Функцията хвърля изключение, ако преобразуването не може да бъде завършено или ако знаците във входния низ са невалидни. Ако не може да се направи преобразуване, възможните изключения са std::invalid_argument и std::out_of_range ако преобразуваната стойност е по-голяма от представимия диапазон за дълго време.
Случаи на употреба:
std::stol() е полезен за трансформиране на цифров вход, който се получава от потребителите във формат на низ в числов тип, така че да може да бъде обработен допълнително.
Четене на числови данни във файлове, съдържащи низове като представяне на данните.
Валидирането на данни включва потвърждение, че въведените от потребителя точно представят дълги числа чрез валидирането и проверката им.
Примерна програма 1:
Нека вземем пример, за да илюстрираме употребата на функция std::stol в C++.
#include #include int main() { std::string numStr = '12345'; try { long result = std::stol(numStr); std::cout << 'Converted value: ' << result << std::endl; } catch (const std::invalid_argument& e) { std::cerr << 'Invalid argument: ' << e.what() << std::endl; } catch (const std::out_of_range& e) { std::cerr << 'Out of range: ' << e.what() << std::endl; } return 0; }
Изход:
Обяснение:
- Низова променлива, наречена numStr се инициализира със стойността '12345' в началото на програмата.
- Кодът се премества в блок try, сигнализирайки, че ще се опита да изпълни изразите, съдържащи се в него. Потенциалните изключения се разглеждат тук.
- Програмата се опитва да използва std::stol() за трансформиране на низа numStr в дълго цяло число вътре в блока try.
- Резултатът се запазва в променливата резултат, ако преобразуването е успешно.
- След това успешно конвертираното число се отпечатва в стандартния изход от програмата.
- Един от catch блоковете обработва всички изключения, които възникват по време на преобразуването.
- Отпечатва се съобщение за грешка, че аргументът е невалиден, ако изключението е от типа std::invalid_argument.
- Ако изключението е от типа std::out_of_range, се отпечатва съобщение за грешка, указващо, че резултатът от преобразуването е извън валидния диапазон.
- Програмата връща 0 на операционната система, което означава успешно изпълнение и основната функция приключва.
Накратко, кодът се опитва да използва std::stol() функция вътре в блок try за преобразуване на низа '12345' в дълго цяло число. Резултатът се отпечатва, ако преобразуването е успешно. Той улавя изключения и отпечатва съответното съобщение за грешка, в случай че такова възникне (или поради неправилен аргумент, или защото резултатът е извън диапазона).
Накрая програмата връща 0, което означава успешно завършване.
Примерна програма 2:
Нека вземем друг пример, за да илюстрираме употребата на функция std::stol в C++.
#include #include int main() { std::cout << 'Enter numeric strings to convert to long integers (type 'exit' to end): '; while (true) { std::string userInput; std::cout <> userInput; if (userInput == 'exit') { std::cout << 'Exiting program. Goodbye! '; break; } try { long result = std::stol(userInput); std::cout << 'Converted Value: ' << result << std::endl; } catch (const std::invalid_argument& e) { std::cerr << 'Error: Invalid argument in input '' << userInput << '': ' << e.what() << std::endl; } catch (const std::out_of_range& e) { std::cerr << 'Error: Out of range for input '' << userInput << '': ' << e.what() << std::endl; } } return 0; }
Изход:
bash проверява дали променливата на средата е зададена
Обяснение:
- В този пример потребителят е подканен да въведе низови стойности, които да бъдат преобразувани.
- Приложението ще продължи да приема въвеждане от потребителя, докато потребителят не въведе 'изход' използвайки цикъл while.
- влизане 'изход' кара тази програма да отпечата прощално съобщение и да прекрати цикъла.
- Ако не, той се опитва да използва std::stol за преобразуване на входа в дълъг.
- Преобразуваната стойност се отпечатва, ако преобразуването е успешно.
- Той улавя изключения (невалидни аргументи, извън обхват), отпечатва съобщение за грешка и продължава.
- Докато чака нов потребителски вход, цикълът преминава към следващата итерация.