Integer-to-String Conversion: std::to_string vs std::to_chars

Question 41 / 51 Correct so far: 0 (0 answered)

Snippet A

To String

long long convertAll(const std::vector<int>& nums) {
    long long total = 0;
    for (int n : nums) {
        std::string s = std::to_string(n);
        total += static_cast<long long>(s.size());
    }
    return total;
}

long long result = convertAll(NUMBERS);
Snippet B

To Chars

long long convertAll(const std::vector<int>& nums) {
    long long total = 0;
    char buf[32];
    for (int n : nums) {
        auto [end, _] = std::to_chars(buf, buf + sizeof(buf), n);
        total += static_cast<long long>(end - buf);
    }
    return total;
}

long long result = convertAll(NUMBERS);
Shared test data (shared-setup)
static const std::vector<int> NUMBERS = []() {
    std::vector<int> v;
    v.reserve(1000);
    for (int i = 0; i < 1000; ++i)
        v.push_back(i * 31 + 7);
    return v;
}();

Which snippet is faster?

Select the correct answer(s)