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.