gpt4 book ai didi

c++ - 如何打印std::vector <>::size_type?

转载 作者:行者123 更新时间:2023-12-02 09:47:35 42 4
gpt4 key购买 nike

std::vector的成员类型为size_type。它的printf格式说明符是什么?
请注意,size_typesize_t不同。
https://en.cppreference.com/w/cpp/container/vector
https://en.cppreference.com/w/cpp/types/size_t
https://en.cppreference.com/w/cpp/io/c/fprintf

最佳答案

What is its printf format specifier?


没人知道。没有指定 std::vector<?>::size_type的确切含义,只是它是一个“无符号整数类型” int C++ Container Library, General container requirements。因为 printf格式说明符取决于类型,所以它们都取决于特定的实现。也可能不存在 printf格式说明符。

How to printf std::vector<>::size_type?


步骤:
  • 创建一个库,以根据类型获取printf格式说明符。
  • 该库基于该类型的模板。

  • 无论如何,这与 std::cout::operator<<重载用于打印相同。只是:
    #include <cstdlib>
    #include <string>
    #include <cstdio>
    #include <vector>

    template<typename T> constexpr const char *get_printf_formatting_spec() noexcept;
    template<> constexpr const char *get_printf_formatting_spec<std::size_t>() noexcept {
    return "zu";
    }
    template<> constexpr const char *get_printf_formatting_spec<unsigned long long>() noexcept {
    return "llu";
    }
    /// etc.

    int main() {
    const auto fmt = std::string() +
    "%" +
    get_printf_formatting_spec<std::vector<int>::size_type>() +
    "\n";
    std::printf(fmt.c_str(), static_cast<std::vector<int>::size_type>(1));
    }

    关于c++ - 如何打印std::vector <>::size_type?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64302514/

    42 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com