std::stoull 但带有 string_view

j5w*_*j5w 0 c++ c++17

std::stoull哪个需要一个basic_string_view?我不想构造一个字符串只是为了调用std::stoull,特别是因为它由const &.

如果不存在,什么是一个转变的有效途径std::basic_string_viewunsigned long long

chr*_*ris 5

如果您正在寻找更高的效率,C++17在(live example)中引入了较低级别的转换<charconv>

#include <charconv>
#include <iostream>
#include <string_view>

using namespace std::literals;

int main() {
    const auto str = "2048"sv;

    unsigned long long result;
    auto [ptr, err] = std::from_chars(str.data(), str.data() + str.size(), result);

    if (err == std::errc{} && ptr == str.data() + str.size()) {
        std::cout << "Entire conversion successful: " << result;
    }
}
Run Code Online (Sandbox Code Playgroud)

我不使用的原因str.begin()str.end()是因为API是直接对const char*,没有迭代器。