【发布时间】:2020-10-11 09:32:02
【问题描述】:
std::vector 有一个成员类型size_type。它的 printf 格式说明符是什么?
请注意,size_type 与 size_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
【问题讨论】:
-
如何找到?阅读文档,使用 google 等。C++11 及更高版本的
%z格式对应于std::size_t(就像在C99 和更高版本中的%z对应于size_t)。严格来说,std::vector::size_type是否与std::size_t相同是实现定义的,但我还没有遇到不是的实现。在 C++11(和 C99)之前,必须在检查值在范围内之后转换为另一种整数类型(如long unsigned)。实际上,在 C++ 中,最好使用 C++ 流(通过函数重载正确处理size_t) -
一种选择是转换为
uintmax_t或std::size_t(不确定它是否足以容纳std::vector::size_type)。 -
@Peter 感谢您提供的信息和建议的解决方法。
-
@Peter 这是
%zu。 -
@Bob__ 我更改了欺骗目标。现在看起来是正确的。