c++ - uint8_t、uint16_t、...的格式说明符?

标签 c++ c++11 scanf

如果我有一个整数变量,我可以通过使用格式说明符 %d 来使用 sscanf,如下所示。

sscanf (line, "Value of integer: %d\n", &my_integer);

在哪里可以找到 uint8_tuint16_tuint32_tuint64_t 的格式说明符?

uint64_t 可能有 %lu。

最佳答案

它们在 <inttypes.h> 中声明作为宏:SCNd8、SCNd16、SCNd32 和 SCNd64。 示例(对于 int32_t):

sscanf (line, "Value of integer: %" SCNd32 "\n", &my_integer);

它们的格式是 PRI (for printf)/SCN (for scan) 然后 o, u, x, X d, i 对应的说明符然后什么都没有,LEAST, FAST, MAX 然后是大小(显然没有大小最大限度)。其他一些示例:PRIo8、PRIuMAX、SCNoFAST16。

编辑:顺便说一句 related question问为什么使用这种方法。您可能会发现答案很有趣。

关于c++ - uint8_t、uint16_t、...的格式说明符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6993132/

相关文章:

c++ - vector 元素如何在 vector std::move 之后保留其原始地址?

c - 使用 scanf 读取字符串作为输入

c++ - 二维数组与数组数组

c++ - 如何在共享对象构建中包含子目录

c++ - 打开场景图 LNK2019 错误

c - 使用 Scanf 出现问题?

c - 使用 sscanf 解析时遇到问题

c++ - 对标准库分配器指针类型的要求

c++ - 处理模棱两可的类型转换/转换 C++11 的正确方法是什么

c++ - 如何创建支持 initializer_list 的 std::vector 子类?