- 论坛徽章:
- 0
|
本帖最后由 getmonyinfo 于 2012-03-08 20:35 编辑
为- ssize_t write(int fd, const void *buf, size_t count);
复制代码 函数写了一个buffer类,
代码如下:
- #include <iostream>
- #include <stdlib.h>
- #include <unistd.h>
- #include <fcntl.h>
- #include <string.h>
- using namespace std;
- class Buffer
- {
- public:
- Buffer ();
- Buffer (size_t size);
- ~Buffer () { if (Data != NULL) free( Data); }
-
- size_t Size () { return DataSize;}
- operator char *() const { return Data; }
- friend ostream &operator<< (ostream &os, Buffer &buf) { os << buf.Data; return os; }
- private:
- char *Data;
- size_t DataSize;
- };
- Buffer::Buffer ()
- :Data (NULL), DataSize (0)
- { }
- Buffer::Buffer (size_t size)
- : Data (NULL), DataSize (size)
- {
- Data = (char *) malloc (size);
- }
- int main ()
- {
- int fd;
- fd = open ("1.info", O_CREAT | O_WRONLY | O_TRUNC);
- Buffer buf (100);
- for (size_t i = 0; i < buf.Size (); ++i)
- buf[i] = (char )i;
- for (size_t i = 0; i < buf.Size (); ++i)
- cout << buf[i] << endl;
- //write (fd, buf, buf.Size ());
- }
复制代码 现在的问题是 cout << buf << endl;输出的全是乱码, 这程序哪里有问题呢? |
|