C++ setbuf什么时候有用(除了空值)?

C++ setbuf什么时候有用(除了空值)?,c++,c,C++,C,setbuf函数什么时候有用(空值除外) 我试图创造这些例子,但我仍然做不到。 我理解setvbuf如何有用,但我不理解setbuf三种可能的情况: 1) 在(不太可能)您想要“优化”I/O缓冲区的情况下,您可以使用 2) 您可能希望缓冲到直接控制的内存中(setbuf或setvbuf) 。。。而且 3) 您可能希望关闭缓冲(或重新打开:再次使用setbuf或setvbuf) 如果你用了什么,你就像 退房 基本上,setvbuf是一个更新的API,其逻辑与setbuf相同setbuf的存在是为了

setbuf
函数什么时候有用(空值除外)

我试图创造这些例子,但我仍然做不到。
我理解
setvbuf
如何有用,但我不理解
setbuf

三种可能的情况:

1) 在(不太可能)您想要“优化”I/O缓冲区的情况下,您可以使用

2) 您可能希望缓冲到直接控制的内存中(setbuf或setvbuf)

。。。而且

3) 您可能希望关闭缓冲(或重新打开:再次使用setbuf或setvbuf)

如果你用了什么,你就像 退房


基本上,
setvbuf
是一个更新的API,其逻辑与
setbuf
相同
setbuf
的存在是为了与
setvbuf
之前编写的程序兼容

换句话说,除非您处理的代码已经使用了
setbuf
,否则请忽略它的存在

:

函数:
void setbuf(文件*流,字符*buf)

  • 如果
    buf
    是空指针,则此函数的效果相当于使用模式参数
    \u IONBF
    调用
    setvbuf
    。否则,它相当于使用
    buf
    调用
    setvbuf
    ,模式为
    \u IOFBF
    ,大小参数为
    BUFSIZ
  • 提供setbuf函数是为了与旧代码兼容;在所有新程序中使用setvbuf

1) ->不,我知道。。。缓冲区的大小必须始终为BUFSIZ。
setvbuf
允许您重新定义该IO流的缓冲区大小
setbuf
是缓冲区大小自动设置为BUFSIZ的setvbuf。为什么会被否决?我认为这是一个合理而有用的问题。