Spec-Zone.ru › C++

std::wcstoimax, std::wcstoumax

Определено в заголовке <cinttypes>
std::intmax_t wcstoimax( const wchar_t* nptr, wchar_t** endptr, int base );
(с C++11)
std::uintmax_t wcstoumax( const wchar_t* nptr, wchar_t** endptr, int base );
(с C++11)

Интерпретирует целое беззнаковое значение в широкой строке, на которую указывает nptr.

Отбрасывает все символы пробела (как определено вызовом std::iswspace) до первого символа, не являющегося пробелом, затем берёт столько символов, сколько необходимо для формирования корректного представления беззнакового целого числа в системе счисления по основанию n (где n=base) и преобразует их в целое значение. Корректное беззнаковое целое значение состоит из следующих частей:

  • (необязательно) знак плюс или минус
  • (необязательно) префикс (0) для указания восьмеричной системы счисления (применимо только когда основание равно 8 или ​0​)
  • (необязательно) префикс (0x или 0X) для указания шестнадцатеричной системы счисления (применимо только когда основание равно 16 или ​0​)
  • последовательность цифр

Множество допустимых значений для основания составляет {0,2,3,...,36}. Множество допустимых цифр для целых чисел в системе счисления с основанием 2 составляет {0,1},, для целых чисел с основанием 3 — {0,1,2},, и так далее. Для оснований, больших чем 10, допустимые цифры включают в себя буквенные символы, начиная с Aa для целых чисел с основанием 11, до Zz для целых чисел с основанием 36 . Регистр символов игнорируется.

Дополнительные числовые форматы могут быть приняты текущим установленным C локалем.

Если значение base равно ​0​, числовая основа автоматически обнаруживается: если префикс равен 0, основание равно восьмеричному; если префикс равен 0x или 0X, основание равно шестнадцатеричному; в противном случае основание равно десятичному.

Если знак минус был частью входной последовательности, вычисленное из последовательности цифр числовое значение отрицается как с помощью унарного минуса в типе результата, что применяет правила переполнения для беззнаковых целых чисел.

Функции устанавливают указатель, на который указывает endptr, на широкую последовательность символов, идущую после последнего интерпретированного символа. Если endptr — нулевой указатель, он игнорируется.

Параметры

nptr - указатель на завершающую нулём широкую строку, подлежащую интерпретации
endptr - указатель на указатель на широкий символ
base - основание интерпретируемого целого значения

Возвращаемое значение

Целое значение, соответствующее содержимому str при успехе. Если преобразованное значение выходит за пределы диапазона соответствующего типа возврата, возникает ошибка диапазона, и возвращается INTMAX_MAX, INTMAX_MIN, UINTMAX_MAX, или ​0​, соответственно. Если преобразование не может быть выполнено, возвращается ​0​.

Пример

#include <cinttypes>
#include <iostream>
#include <string>
 
int main()
{
    std::wstring str = L"helloworld";
    std::intmax_t val = std::wcstoimax(str.c_str(), nullptr, 36);
    std::wcout << str << " in base 36 is " << val << " in base 10\n";
 
    wchar_t* nptr;
    val = std::wcstoimax(str.c_str(), &nptr, 30);
    if (nptr != &str[0] + str.size())
        std::wcout << str << " in base 30 is invalid."
                   << " The first invalid digit is " << *nptr << '\n';
}

Вывод:

helloworld in base 36 is 1767707668033969 in base 10
helloworld in base 30 is invalid. The first invalid digit is w

См. также

strtoimaxstrtoumax
(C++11)(C++11)
преобразует строку байтов в std::intmax_t или std::uintmax_t
(функция)
wcstolwcstoll
преобразует широкую строку в целое значение
(функция)
wcstoulwcstoull
преобразует широкую строку в беззнаковое целое значение
(функция)
C документация по wcstoimax, wcstoumax

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/string/wide/wcstoimax

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API