C++ std::stol 函数

17 Mar 2025 | 4 分钟阅读

在本文中,您将学习 C++ 中的 std::stol 函数及其语法和示例。

什么是 std::stol()?

C++ 中的标准模板库 (STL) 包含 std::stol() 函数,该函数专门用于将字符串转换为长整型。此函数在处理用户输入或从外部源读取数据时特别有用——输入通常以字符串格式给出。它接收字符串作为输入后返回等效的长整型。如果转换不可能或如果输入字符串包含不是有效数字一部分的字符,则会抛出 std::invalid_argument 或 std::out_of_range 类型的异常。

语法

它具有以下语法:

long std::stol(const std::string& str, size_t* pos = 0, int base = 10);

str:需要转换为长整型的文本。

pos:字符串中第一个未转换字符的索引,存储为 size_t 对象的指针。如果不需要,此可选参数可以设置为 nullptr。

base:转换的数值基数。默认值为 10。

返回值:函数将从输入字符串解析的数值作为长整型返回。

异常:如果无法完成转换或输入字符串中的字符无效,则函数会抛出异常。如果无法进行转换,可能的异常是 std::invalid_argument,如果转换后的值大于长整型可表示的范围,则为 std::out_of_range

用例

  • 用户输入处理

std::stol() 对于将以字符串格式从用户接收的数字输入转换为数字类型以便进一步处理非常有用。

  • 输入/输出文件

读取文件中包含字符串作为数据表示的数值数据。

  • 数据验证

数据验证涉及通过验证和核实来确认用户输入准确表示长数字。

示例程序 1

让我们以一个例子来说明 C++ 中 std::stol 函数的使用。

输出

std::stol function in C++

说明

  1. 初始化
    • 程序开始时,字符串变量 numStr 用值“12345”初始化。
  2. try 块
    • 代码进入 try 块,表示它将尝试运行其中包含的语句。潜在的异常在此处处理。
  3. 转换尝试
    • 程序尝试在 try 块内使用 std::stol() 将字符串 numStr 转换为长整型。
  4. 有效转换
    • 如果转换成功,结果将保存在变量 result 中。
  5. 输出转换值
    • 然后程序将成功转换的数字打印到标准输出。
  6. 处理异常
    • 其中一个 catch 块处理转换过程中出现的任何异常。
  7. 捕获无效参数异常
    • 如果异常类型为 std::invalid_argument,则打印一条错误消息,指出参数无效。
  8. 捕获超出范围异常
    • 如果异常类型为 std::out_of_range,则打印一条错误消息,指出转换结果超出有效范围。
  9. 退货政策
    • 程序向操作系统返回 0,表示成功执行,并且主函数结束。

简而言之,代码尝试在 try 块内使用 std::stol() 函数将字符串“12345”转换为长整型。如果转换成功,则打印结果。如果出现异常(无论是由于不正确的参数还是由于结果超出范围),它会捕获异常并打印相关的错误消息。

最后,程序返回 0,表示成功完成。

示例程序 2

让我们再举一个例子来说明 C++ 中 std::stol 函数的使用。

输出

std::stol function in C++

解释

  • 在此示例中,系统会提示用户输入要转换的字符串值。
  • 应用程序将使用 while 循环继续接受用户输入,直到用户输入 "exit"
  • 循环内部使用 Std::cin 读取用户输入。
  • 输入 "exit" 将导致此程序打印告别消息并结束循环。
  • 否则,它会尝试使用 std::stol 将输入转换为长整型。
  • 如果转换成功,则打印转换后的值。
  • 它会捕获异常(无效参数、超出范围),打印错误消息,然后继续。
  • 当它等待新的用户输入时,循环进入下一次迭代。