C++ String::stoul() 函数



C++ 的std::string::stoul()函数用于将字符串转换为无符号长整型。它读取字符串,将其解释为无符号长整型,并可以选择指定基数。如果转换失败,则抛出 invalid_argument 异常。

语法

以下是 std::string::stoul() 函数的语法。

unsigned long stoul (const string&  str, size_t* idx = 0, int base = 10);
unsigned long stoul (const wstring& str, size_t* idx = 0, int base = 10);

参数

  • str − 表示包含整数表示形式的字符串对象。
  • idx − 指向 size_t 类型对象的指针,函数会将该指针的值设置为 str 中数值之后下一个字符的位置。
  • base − 表示数值基数,用于确定有效字符及其解释。

返回值

它将字符串的值返回为无符号长整型值。

示例 1

以下是如何在 C++ 中使用 std::stoul 函数将字符串转换为无符号长整型的基本示例。

#include <iostream>
#include <string>
using namespace std;
int main() {
   string str = "123456";
   unsigned long number = stoul(str);
   cout << "The string \"" << str << "\" converted to unsigned long is " << number << endl;
   return 0;
}

输出

如果运行以上代码,将生成以下输出。

The string "123456" converted to unsigned long is 123456

示例 2

在这个示例中,我们传递一个十六进制颜色代码,将其字符串转换为其数值 RGB(红、绿、蓝)值。

#include <iostream>
#include <string>
using namespace std;
int main() {
   string hexColor = "FF5733";
   unsigned long rgbValue = stoul(hexColor, nullptr, 16);
   cout << "The numeric RGB value = " << rgbValue << std::endl;
   return 0;
}

输出

如果运行以上代码,将生成以下输出。

The numeric RGB value = 16734003

示例 3

在这个程序中,我们初始化两个字符串,以比较确定哪个字符串表示更大的数字。

#include <iostream>
#include <string>
int main() {
   std::string numStr1 = "4294967295";
   std::string numStr2 = "123456789";
   unsigned long num1 = std::stoul(numStr1);
   unsigned long num2 = std::stoul(numStr2);
   if (num1 > num2) {
      std::cout << numStr1 << " is greater than " << numStr2 << std::endl;
   } else {
      std::cout << numStr2 << " is greater than " << numStr1 << std::endl;
   }
   return 0;
}

输出

以下是以上代码的输出。

4294967295 is greater than 123456789

示例 4

在这个程序中,我们验证并转换命令行参数,以确保它们是有效的无符号长整型。

#include <iostream>
#include <string>
using namespace std;
int main(int argc, char * argv[]) {
   if (argc < 2) {
      cerr << "Usage: " << argv[0] << " <number>" << endl;
      return 1;
   }
   try {
      unsigned long param = std::stoul(argv[1]);
      cout << "The command-line parameter is: " << param << endl;
   } catch (const exception & e) {
      cerr << "Error: " << e.what() << endl;
      return 1;
   }
   return 0;
}

输出

以下是以上代码的输出。

Usage: main <number>             
string.htm
广告
© . All rights reserved.