logo

std::stol функция в C++

В тази статия ще научите за функцията 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; } 

Изход:

std::stol функция в C++

Обяснение:

    Инициализация:
    • Низова променлива, наречена 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 проверява дали променливата на средата е зададена
std::stol функция в C++

Обяснение:

  • В този пример потребителят е подканен да въведе низови стойности, които да бъдат преобразувани.
  • Приложението ще продължи да приема въвеждане от потребителя, докато потребителят не въведе 'изход' използвайки цикъл while.
  • Std::cin се използва вътре в цикъла за четене на въведеното от потребителя.
  • влизане 'изход' кара тази програма да отпечата прощално съобщение и да прекрати цикъла.
  • Ако не, той се опитва да използва std::stol за преобразуване на входа в дълъг.
  • Преобразуваната стойност се отпечатва, ако преобразуването е успешно.
  • Той улавя изключения (невалидни аргументи, извън обхват), отпечатва съобщение за грешка и продължава.
  • Докато чака нов потребителски вход, цикълът преминава към следващата итерация.