Spec-Zone.ru › C++

std::wcstol, std::wcstoll

Defined in header <cwchar>
long      wcstol ( const wchar_t* str, wchar_t** str_end, int base );
long long wcstoll( const wchar_t* str, wchar_t** str_end, int base );
(since C++11)

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

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

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

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

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

Если значение base равно ​0​, числовое основание определяется автоматически: если префикс 0, основание равно 8, если префикс 0x или 0X, основание равно 16, в противном случае основание десятичное.

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

Функции устанавливает указатель, на который указывает str_end, чтобы указывать на широкие символы после последнего интерпретированного символа. Если str_end является нулевым указателем, он игнорируется.

Параметры

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

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

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

Пример

#include <cwchar>
#include <errno.h>
#include <iostream>
#include <string>
 
int main()
{
    const wchar_t* p = L"10 200000000000000000000000000000 30 -40";
    wchar_t* end;
    std::wcout << "Parsing L'" << p << "':\n";
    for (long i = std::wcstol(p, &end, 10); p != end; i = std::wcstol(p, &end, 10))
    {
        std::wcout << '\'' << std::wstring(p, end-p) << "' -> ";
        p = end;
        if (errno == ERANGE)
        {
            std::wcout << "range error, got ";
            errno = 0;
        }
        std::wcout << i << '\n';
    }
}

Возможный вывод:

Parsing L'10 200000000000000000000000000000 30 -40':
'10' -> 10
' 200000000000000000000000000000' -> range error, got 9223372036854775807
' 30' -> 30
' -40' -> -40

См. также

strtolstrtoll
(C++11)
преобразует строку байтов в целое значение
(функция)
wcstoulwcstoull
преобразует широкую строку в целое беззнаковое значение
(функция)
C документация для wcstol, wcstoll

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

Spec-Zone.ru

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