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


C/C++ wcstoimax()、wcstoumax()用法及代碼示例


C /C++中的wcstoimax()和wcstoumax()函數與C++中的strtoimax()和strtoumax()函數完全相同,但用於將寬字符串(wstring)的內容轉換為指定基數的整數。此函數在cinttypes頭文件中定義。

用法:

uintmax_t wcstoumax(const wchar* wstr, wchar** end, int base);
intmax_t wcstoimax(const wchar* wstr, wchar** end, int base);

參數:該函數接受三個強製性參數,如下所述:


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

返回類型:該函數返回兩個值,如下所示:

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

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

// C++ program to illustrate the 
// wstoimax() function 
#include <bits/stdc++.h> 
using namespace std; 
  
// Driver code 
int main() 
{ 
    wstring str = L"geeksforgeeks"; 
  
    intmax_t val = wcstoimax(str.c_str(), nullptr, 36); 
  
    wcout << str << " in base 36 is " << val << " in base 10\n\n"; 
  
    wchar_t* end; 
  
    val = wcstoimax(str.c_str(), &end, 30); 
  
    // 'w' does not lies in base 30 so string 
    // beyond this cannot be converted 
    wcout << "Given String = " << str << endl; 
  
    wcout << "Number with base 30 in string " << val << " in base 10" << endl; 
  
    wcout << "End String points to " << end << endl; 
  
    return 0; 
}
輸出:
geeksforgeeks in base 36 is 9223372036854775807 in base 10

Given String = geeksforgeeks
Number with base 30 in string 8759741037015451228 in base 10
End String points to

程序2:

// C++ program to illustrate the 
// wcstoumax() function 
#include <bits/stdc++.h> 
using namespace std; 
  
// Driver code 
int main() 
{ 
    int base = 10; 
  
    // L is a wide string literal 
    wstring str = L"12345abcd"; 
    wchar_t* end; 
    uintmax_t num; 
  
    num = wcstoumax(str.c_str(), &end, base); 
  
    wcout << "Given String = " << str << endl; 
  
    wcout << "Value stored in num " << num << endl; 
  
    if (*end) { 
        wcout << "End string points to " << end << endl 
              << endl; 
    } 
    else { 
        wcout << "Null pointer" << endl 
              << endl; 
    } 
  
    // in this case no numeric character is there 
    // so the function returns 0 
    base = 10; 
  
    wstring str2 = L"abcd"; 
  
    wcout << "Given String = " << str2 << endl; 
  
    num = wcstoumax(str2.c_str(), &end, base); 
  
    wcout << "Number with base 10 in string " << num << endl; 
    if (*end) { 
        wcout << "End String points to " << end; 
    } 
    else { 
        wcout << "Null pointer"; 
    } 
    return 0; 
}
輸出:
Given String = 12345abcd
Value stored in num 12345
End string points to abcd

Given String = abcd
Number with base 10 in string 0
End String points to abcd


相關用法


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