返回信息流char *p;
p = new char[1024];
然后往p指向的空间中写数据,如何知道我写的数据是否写了开辟空间的大小呢?
这是一条镜像帖。来源:北邮人论坛 / cpp / #72619同步于 2013/7/15
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
[问题]C++ 如何算动态数组的大小
lcl13hope
2013/7/15镜像同步11 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
【 在 LafengHu 的大作中提到: 】
: 你写的时候,不移动指针么?
要移动的,我是从二进制文件里读取一段内容到设定的好动态数组中,然后想知道我读到的数据是否正确,才有了上面的问题
根据指针的offset,不就可以计算出写进buffer里多少数据了么?
另外,一般的read之类的函数,不都有返回值么?返回值就是byte数。。
还是我没搞懂你的问题?
【 在 lcl13hope 的大作中提到: 】
: 要移动的,我是从二进制文件里读取一段内容到设定的好动态数组中,然后想知道我读到的数据是否正确,才有了上面的问题
【 在 LafengHu 的大作中提到: 】
: 根据指针的offset,不就可以计算出写进buffer里多少数据了么?
: 另外,一般的read之类的函数,不都有返回值么?返回值就是byte数。。
: 还是我没搞懂你的问题?
囧。。read原来返回的是所读入缓冲区的末尾地址,初学,嘿嘿,offset 的话是我自己给定的
比如:
fstream file;
char *buf;
file.open(filename,ios::binary||ios::in);
file.seekg(0,file.end);
int l = file.tellg();
file.seekg(0,file.beg);
buf = new char[l];
cout<<file.read(buf,l); //00C7F7B8 缓冲区的末尾地址
这里的l,应该就是您说的offset了,但是我想知道是否是按照我定义地读取了这么多,怎么判断呢,就是说如果读少了或读多了?另外 还想请教下 怎么拿到返回的指针值呢,int a = file.read(buf,l);还是?
cout输出的就是读到的字节数吧。。就是file.read()那里。
看看MSDN?关于这个函数的说明?
如果没有读那么多,返回的是实际读到的字节数。
你这种调用,指针在用户空间是不移动的,就是指向buffer的首地址。
囧了都,你打印出来看看?
【 在 lcl13hope 的大作中提到: 】
: 囧。。read原来返回的是所读入缓冲区的末尾地址,初学,嘿嘿,offset 的话是我自己给定的
: 比如:
: fstream file;
: ...................
【 在 LafengHu 的大作中提到: 】
: cout输出的就是读到的字节数吧。。就是file.read()那里。
: 看看MSDN?关于这个函数的说明?
: 如果没有读那么多,返回的是实际读到的字节数。
: ...................
还没睡啊!辛苦...真心感谢
试过了 file.read()打印地就是后面的尾地址00C7F7B8
【 在 LafengHu 的大作中提到: 】
: cout输出的就是读到的字节数吧。。就是file.read()那里。
: 看看MSDN?关于这个函数的说明?
: 如果没有读那么多,返回的是实际读到的字节数。
: ...................
请问 那更好地方式是该如何组织函数地调用呢..
不知道~ 好久木有搞c++了!
去查msdn吧,关于file的read函数,肯定一查就查出来了!
【 在 lcl13hope 的大作中提到: 】
: 请问 那更好地方式是该如何组织函数地调用呢..
如果read返回的是个地址,可以试试用这个地址减去原来buffer的地址?
囧,我也是个渣,睡了,你自己搞搞吧~
【 在 LafengHu 的大作中提到: 】
: 不知道~ 好久木有搞c++了!
: 去查msdn吧,关于file的read函数,肯定一查就查出来了!