提问人:f ckx 提问时间:3/29/2022 最后编辑:SuperStormerf ckx 更新时间:5/23/2022 访问量:48
在哪里可以找到对函数 write 的引用?
Where can I find a reference to the function write?
问:
我有以下代码用于定义 streambuf 类。我必须根据自己的需要进行调整。在此之前,我必须了解代码的实际工作方式。谁能告诉我在哪里可以找到对 flushBuffer 中写入函数的引用。它需要 3 个参数并返回一个 int。 std::streambuf 没有这样的成员......
//code taken from: The C++ Standard Library Second Edition, Nicolai M. Josuttis, p. 837
class Outbuf_buffered_orig : public std::streambuf {
protected:
static const int bufferSize = 10; // size of data buffer
char buffer[bufferSize]; // data buffer
public:
// constructor
// - initialize data buffer
// - one character less to let the bufferSizeth character cause a call of overflow()
Outbuf_buffered_orig() {
setp (buffer, buffer+(bufferSize-1));
}
// destructor
// - flush data buffer
virtual ~Outbuf_buffered_orig() {
sync();
}
protected:
// flush the characters in the buffer
int flushBuffer () {
int num = pptr()-pbase();
if (write (1, buffer, num) != num) {
return EOF;
}
pbump (-num); // reset put pointer accordingly
return num;
}
// buffer full
// - write c and all previous characters
virtual int_type overflow (int_type c) {
if (c != EOF) {
// insert character into the buffer
*pptr() = c;
pbump(1);
}
// flush the buffer
if (flushBuffer() == EOF) {
// ERROR
return EOF;
}
return c;
}
// synchronize data with file/destination
// - flush the data in the buffer
virtual int sync () {
if (flushBuffer() == EOF) {
// ERROR
return -1;
}
return 0;
}
}; //Outbuf_buffered
答:
2赞
YSC
3/29/2022
#1
谁能告诉我在哪里可以找到对写入函数的引用
这是 Linux',定义于 。ssize_t write(int fd, const void *buf, size_t count)
<unistd.h>
有关更多信息,请参见 man 2 write
。
注意:写入文件描述符 #1:标准输出。write(1, ...)
评论
0赞
f ckx
3/29/2022
谢谢!我通常使用Google,然后最终进入著名的C++教程/参考站点,但这次没有成功。您的笔记也有帮助!
评论