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
См. также
|
(C++11)(C++11) | преобразует байтовую строку в std::intmax_t или std::uintmax_t (функция) |
| преобразует широкую строку в целочисленное значение (функция) |
|
| преобразует широкую строку в значение беззнакового целого числа (функция) |
|
Документация C для wcstoimax, wcstoumax |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/string/wide/wcstoimax