格式化说明符以在C ++ 11中可移植地打印std :: uint64_t变量

Fra*_*une 4 c++ printf portability c++11

使用C ++系列中的函数来打印类型值std::uint64_t(来自<cstdint>)的格式说明符是什么std::printf()

C99有PRIu64(from <inttypes.h>),但对我来说还不是完全清楚PRIu64有效的C ++ 11,尽管我可以找到暗示。

没有PRIu64,据我所知,没有单一格式说明符可在所有情况下使用:

  • 在32位平台上,std::uint64_t将定义为unsigned long long,格式说明符将为%llu
  • 在64位平台上,std::uint64_t将被定义为unsigned long,格式说明符将为%lu
  • 但是,对于Visual Studio,%llu在两种情况下都可以使用。

Nat*_*ica 13

PRIu64仍然是您将在C ++中使用的内容。每个[cinttypes.syn] PRIu64

[...]

#define PRIuN see below
Run Code Online (Sandbox Code Playgroud)

[...]

标头的内容和含义<cinttypes>与C标准库标头相同<inttypes.h>[...]

因此它存在并且具有与C ISO / IEC 9899:2011标准相同的行为。