當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


C++ strol()用法及代碼示例


C++中的strtol()函數將字符串的內容解釋為指定基數的整數,並將其值返回為long int。此函數還設置了一個結束指針,該指針指向字符串的最後一個有效數字字符之後的第一個字符,如果沒有這樣的字符,則將指針設置為null。此函數在cstdlib頭文件中定義。

用法:

long int strtol(const char* str, char** end, int base)

參數:該函數包含三個必需參數,如下所述。


  • str:字符串由整數組成。
  • end:這是對char *類型的對象的引用。 end的值由函數設置為str中最後一個有效數字字符之後的下一個字符。如果不使用此參數,它也可以是空指針。
  • base:它表示確定有效字符及其在字符串中的解釋的數字基數(基數)

返回類型:該函數返回兩種類型的值,如下所述:

  • 如果發生有效轉換,則該函數將轉換後的整數返回為long int值。
  • 如果無法執行有效的轉換,則返回零值。

以下示例程序旨在說明上述函數。

示例1:

// C++ program to illustrate the 
// strtol() function 
#include <bits/stdc++.h> 
using namespace std; 
  
// Driver code 
int main() 
{ 
    int base = 10; 
    char str[] = "123abc"; 
    char* end; 
    long int num; 
  
    // Function used to convert string 
    num = strtol(str, &end, base); 
  
    cout << "Given  String = " << str << endl; 
    cout << "Number with base 10 in string " << num << endl; 
    cout << "End String points to " << end << endl 
         << endl; 
  
    // in this case the end pointer poijnts to null 
    strcpy(str, "12345"); 
  
    // prints the current string 
    cout << "Given String = " << str << endl; 
  
    // function used 
    num = strtol(str, &end, base); 
  
    // prints the converted integer 
    cout << "Number with base 10 in string " << num << endl; 
    if (*end) { 
        cout << end; 
    } 
    else { 
        cout << "Null pointer"; 
    } 
    return 0; 
}
輸出:
Given  String = 123abc
Number with base 10 in string 123
End String points to abc

Given String = 12345
Number with base 10 in string 12345
Null pointer

示例2:

// C++ program to illustrate the 
// strtol() function Program to 
// convert multiple values at different base 
#include <bits/stdc++.h> 
using namespace std; 
  
// Drriver code 
int main() 
{ 
    char str[] = "100 ab 123 1010"; 
    char* end; 
    long int a, b, c, d; 
  
    // base 10 
    a = strtol(str, &end, 10); 
  
    // base 16 
    b = strtol(end, &end, 16); 
  
    // base 8 
    c = strtol(end, &end, 8); 
  
    // base 2 
    d = strtol(end, &end, 2); 
  
    cout << "The decimal equivalents of all numbers are \n"; 
  
    cout << a << endl 
         << b << endl 
         << c << endl 
         << d; 
    return 0; 
}
輸出:
The decimal equivalents of all numbers are 
100
171
83
10


相關用法


注:本文由純淨天空篩選整理自Aman Goyal 2大神的英文原創作品 strol() function in C++。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。