std::strtoimax, std::strtoumax
![]() |
Эта страница была переведена автоматически с английской версии вики используя Переводчик Google.
Перевод может содержать ошибки и странные формулировки. Наведите курсор на текст, чтобы увидеть оригинал. Вы можете помочь в исправлении ошибок и улучшении перевода. Для инструкций перейдите по ссылке. Щёлкните здесь, чтобы увидеть английскую версию этой страницы |
Defined in header <cinttypes>
|
||
std::intmax_t strtoimax(const char* nptr, char** endptr, int base); |
(начиная с C++11) | |
std::uintmax_t strtoumax(const char* nptr, char** endptr, int base); |
(начиная с C++11) | |
nptr
.nptr
.Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Пропускаются все пробельные символы (которые определяются таковыми с помощью вызова функции isspace()
), до тех пор пока не встретится первый символ другого типа, затем берётся как можно больше символов, которые формируют корректную запись целочисленного числа в n-системе счисления (где n = base) , и конвертирует её в значение нужного типа. Корректная запись целого числа состоит из следующих частей:
- (необязательно) знак плюса или минуса
- (необязательно) префикс (
0
), который обозначает использование 8-ричной системы счисления (применимо только тогда, когда base равен 8 или 0) - (необязательно) префикс (
0x
или0X
), который обозначает использование 16-ричной системы счисления (применимо только тогда, когда base равен 16 или 0) - последовательность цифр.
Допустимый набор цифр для 2-ричной системы счисления - 01
, для 3-ичной - 012
и так далее, начиная с 11-ричной системы счисления в диапазон допустимых цифр входят латинские буквы от Aa
до Zz
для 36-ричной системы счисления. В этом случае регистр букв не имеет значения.
Дополнительные форматы для чисел могут применяться, используя региональные параметры Си.
Если значение base равно 0, то система счисления автоматически определяется: если присутствует префикс 0
, то она 8-ричная, если 0x
или 0X
, то 16-ричная, иначе 10-ричная.
Если знак минуса был частью входной последовательности, то числовое значение вычисляется, путём применения к числу из последовательности цифр операции унарного минуса.
endptr
чтобы она указывала на символ после последнего символа интерпретируются. Если endptr
является NULL, он игнорируется.endptr
to point to the character past the last character interpreted. If endptr
is NULL, it is ignored.Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
nptr
пуст или не иметь ожидаемого форму, преобразование не выполняется, и (если enptr
не NULL) значение nptr
хранится в объекте, на который указывает endptr
.nptr
is empty or does not have the expected form, no conversion is performed, and (if enptr
is not NULL) the value of nptr
is stored in the object pointed to by endptr
.Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Содержание |
[править] Параметры
nptr | — | указатель с нулевым байтом строки должны интерпретироваться
Оригинал: pointer to the null-terminated byte string to be interpreted Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. |
endptr | — | Указатель на указатель на символ .
Оригинал: pointer to a pointer to character. Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. |
base | — | ' Из базы интерпретировать целое значение
Оригинал: base of the interpreted integer value Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. |
[править] Возвращаемое значение
- В случае успеха, целое значение, соответствующее содержание
str
возвращается.Оригинал:If successful, an integer value corresponding to the contents ofstr
is returned.Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. - Если преобразованное значение выпадает из диапазона соответствующий тип возвращения, диапазон ошибки (настройка [[cpp/error/errno|errno]] в ERANGE) и INTMAX_MAX, INTMAX_MIN, UINTMAX_MAX или 0 возвращается, в случае необходимости.Оригинал:If the converted value falls out of range of corresponding return type, a range error occurs (setting [[cpp/error/errno|errno]] to ERANGE) and INTMAX_MAX, INTMAX_MIN, UINTMAX_MAX or 0 is returned, as appropriate.Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. - Если преобразование не может быть выполнено, 0 возвращается.Оригинал:If no conversion can be performed, 0 is returned.Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
[править] Пример
#include <iostream> #include <string> #include <cinttypes> int main() { std::string str = "helloworld"; std::intmax_t val = std::strtoimax(str.c_str(), nullptr, 36); std::cout << str << " in base 36 is " << val << " in base 10\n"; char* nptr; val = std::strtoimax(str.c_str(), &nptr, 30); if(nptr != &str[0] + str.size()) std::cout << 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 Оригинал: converts a wide string to std::intmax_t or std::uintmax_t Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (функция) |
Преобразует однобайтовую строку в целое число в различных системах счисления (функция) | |
Преобразует однобайтовую строку в целое число без знака в различных системах счисления (функция) | |
Справка по C — strtoimax, strtoumax
|