putback()和unget()之间的区别

Pup*_*ppy 23 c++

我使用的是标准的iostream获取某个文件的一些输入,并且我感到困惑unget()putback(character).从文档中我可以看出,这些函数实际上是相同的,unget()只记得放入的字符,所以我很紧张.我一直都在使用putback(character),但character始终是最后读过的角色,我一直在考虑改变unget().putback(character)永远是相同的unget(),如果character总是最后读取的字符?

Dav*_*men 16

你不能撒谎unget().它"取消"最后读取的字符.你可以撒谎putback(c).您可以"回放"除最后读取的字符之外的某些字符.有时候放回最后读取的字符以外的字符会很有用.

此外,如果底层读缓冲区确实具有缓冲功能,则可以"回放"多个字符.我认为ungetc()仅限于一个角色.

编辑
不.它看起来unget()可以追溯到最早putback().

  • 它确实看起来像我.`putback()`让你能够把一些东西放回到最后读取的角色之外.如果你只使用`putback(last_read_character)`,效果与调用`unget()`相同,但没有明确保证你真正"忘记"最后读取的字符. (2认同)