使用size_t的正确形式(将-1作为默认值传递以获得最大大小)

时间:2012-08-22 21:34:21

标签: c++ c unsigned

我正在尝试向后解析文本文件。我已完成解析,现在我试图给我的函数一个限制,以便它不会读取我的整个5Mb-2Gb日志文件。我将这个限制作为size_t传递,我试图想办法默认限制来读取文件中的所有内容。

因为将-1传递给无符号类型将设置最高位,我假设这意味着我得到size_t的最大大小。我想知道,这是不好的形式?此外,还有更好的方法来实现我的目标。

2 个答案:

答案 0 :(得分:5)

为了获得size_t可以容纳的最大可能值,请使用std::numeric_limits。这将是最便携的方式:

#include <limits>

size_t max_value = std::numeric_limits<size_t>::max();

答案 1 :(得分:3)

关于使用-1获取无符号整数类型的最大大小是否“可以”的问题,我将引荐您this question/answer here

鉴于答案,您可以使用更好的C ++方法的其他选项是使用std::numeric_limits<size_t>::max()

最后,在C中,您可以使用_MAX中的各种limits.h定义之一来描述您正在阅读的数据类型的最大整数值。例如,对于size_t类型,您可以使用SIZE_MAX