[C++] Почему нет std :: stou?


Answers

Я понятия не имею, почему stoi существует, но не stou , но единственная разница между stoul и гипотетическим stou будет проверкой того, что результат находится в диапазоне unsigned :

unsigned stou(std::string const & str, size_t * idx = 0, int base = 10) {
    unsigned long result = std::stoul(str, idx, base);
    if (result > std::numeric_limits<unsigned>::max()) {
        throw std::out_of_range("stou");
    }
    return result;
}

(Аналогично, stoi также похож на stol , просто с другой проверкой диапазона, но поскольку он уже существует, нет необходимости беспокоиться о том, как его реализовать).

Question

В C ++ 11 были добавлены некоторые новые функции преобразования строк:

http://en.cppreference.com/w/cpp/string/basic_string/stoul

Он включает в себя stoi (string to int), stol (string to long), stoll (длинный длинный), stoul (string to unsigned long), stoull (строка до unsigned long long). Примечательным в его отсутствие является функция stou (string to unsigned). Есть ли какая-то причина, по которой это не нужно, но все остальные?

related: Нет функции "sto {short, unsigned short}" в C ++ 11?