- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我正在使用标准 iostream 从文件中获取一些输入,我对 unget()
与 putback(character)
感到困惑。在我看来,这些函数实际上是相同的,其中 unget()
只记得输入的字符,所以我很紧张。我一直用putback(character)
,但是character
总是最后读取的字符,我一直在考虑改成unget()
。如果 character
总是最后读取的字符,putback(character)
是否总是与 unget()
相同?
最佳答案
你不能对 unget()
撒谎。它“取消”最后读取的字符。你可以用 putback(c)
撒谎。您可以“放回”除上次读取字符之外的某些字符。有时放回最后读取字符以外的字符会很有用。
另外,如果底层读取缓冲区确实具有缓冲能力,您可以“放回”多个字符。我认为 ungetc()
仅限于一个字符。
编辑
没有。看起来 unget()
可以追溯到 putback()
。
关于c++ - putback() 和 unget() 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6769416/
我只是有点困惑:成员函数 putback() 将读取的最后一个字符放回到输入流中。这到底是什么意思?我尝试对其进行试验,发现无论是否使用 putback(),文件的结果都没有差异。 *我有两个文本文件
问题来自https://en.cppreference.com/w/cpp/io/basic_istream/putback , 示例代码。 #include #include int main(
许多站点都描述了 istream::putback() 函数,它可以让您将一个字符“放回”输入流中,以便您可以在后续的读取操作中再次读取它。 然而,是什么阻止我在同一个流上按顺序多次调用 putbac
我正在使用标准 iostream 从文件中获取一些输入,我对 unget() 与 putback(character) 感到困惑。在我看来,这些函数实际上是相同的,其中 unget() 只记得输入的字
我的用例: 遍历字符串 对词法分析器状态机中的每个字符使用react 看到一些字符,意识到前一个字符是其 token 的结尾 完成 token 转换回Empty状态(意味着没有 token 是部分构造
我有以下代码片段来修改字符串流,使其前面有一个额外的字符。但是,我无法得到预期的结果。 void modifyStream(std::istream& s1) { if (s1.putback
直觉上,从 C++ 规范来看,在我看来,istream::putback( c ) 应该始终安排输入缓冲区,以便下一次调用 istream::peek () 应读取字符 c。这不对吗?我问是因为 Xc
我需要尝试从 std::istream(可能是 std::cin)中查看多个字符,所以我写了一个简单的循环来调用 get() 很多次,然后 putback() 很多次: std::vector pee
我的程序中有线程,我想将字符放入流中并在另一个线程中读取它,但是在 std::cin.putback() 之后我需要从键盘写一些东西来“唤醒”std::cin在主要功能中。我可以做一些自动阅读的事情吗
我是编程新手,正在查看这段代码,试图了解它是如何工作的。我的理解是,程序在每次运行 while 循环的开始等待输入,如果允许该输入,则循环运行。那是对的吗?如果是,程序怎么会在 '!' 的情况下打印出
我是一名优秀的程序员,十分优秀!