gpt4 book ai didi

c++ - 在 IOStreams 库中使用 ignore(numeric_limits::max()) 是否可以处理任意大量流?

转载 作者:太空狗 更新时间:2023-10-29 20:47:23 25 4
gpt4 key购买 nike

在 C++ 标准(第 27.6.1.3\24 节)中,对于iOStreams 库中的 istream ignore() 函数,这意味着如果您为 numeric_limits::max() 的“n”提供参数,它将继续忽略字符永远直到找到分隔符,甚至超出实际streamsize 的最大值(即“n”参数被解释为无限)。

对于 gcc 实现,这确实看起来是如何ignore() 已实现,但我仍然不清楚这是特定于实现的,还是标准规定的。知道这一点的人可以确认这是由a保证的吗?符合标准的 iostreams 库?

最佳答案

标准说 numeric_limits<streamsize>::max()是一个特殊值,不会影响跳过的字符数。

Effects: Behaves as an unformatted input function (as described in 27.7.2.3, paragraph 1). After constructing a sentry object, extracts characters and discards them. Characters are extracted until any of the following occurs:
-- if n != numeric_limits<streamsize>::max() (18.3.2), n characters are extracted
-- end-of-file occurs on the input sequence (in which case the function calls setstate(eofbit), which may throw ios_base::failure (27.5.5.4));
-- traits::eq_int_type(traits::to_int_type(c), delim) for the next available input character c (in which case c is extracted).

关于c++ - 在 IOStreams 库中使用 ignore(numeric_limits<streamsize>::max()) 是否可以处理任意大量流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5878052/

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