使用new delete定义一个未知长度的char字符组

会从命令行中读出我所要的数据用ReadFile来读取读取端读出数据但是读取出的数据长度可能会很长放置到一个char型字符串中我无法估计具体长度想用newdelete来实现... 会从命令行中读出我所要的数据 用ReadFile来读取读取端读出数据 但是读取出的数据长度可能会很长 放置到一个char型字符串中 我无法估计具体长度 想用new delete来实现 完成后 在最后加上'\0' 请问下 具体的实现方式 展开
 我来答
百度网友6eab688
2012-07-19 · TA获得超过4692个赞
知道大有可为答主
回答量:962
采纳率:50%
帮助的人:951万
展开全部
1. 建立个大点的缓冲区,例如char buf[1024];
2. 每次读取1024的字符,直到文件结束
3. 根据读取的长度,加上已经读取的长度,重新new一个字符数组,并把旧数组和新读取的内容复制到这个新数组中,然后抛弃旧的数组
4. 回第2步
追问
那能麻烦教我下具体的实现代码吗 比如说我现在定义一个char  buf[1024]; 但是我操作结束后发现是2048的字符 那具体怎么实现呢?
追答
我只能提供大致代码,你要在具体开发环境中稍作修改

char buf[1024];
long len, pos = 0;
char *p = NULL;
while ((len = ReadFile(file, buf, 1024)) > 0) // 只要有内容读到
{
char *pn = new char[pos + len];
if (p) {
strcpy(pn, p, pos);
delete[] p;
}
p = pn;
strcpy(p+pos, buf, len);
pos += len;
}
乐酷科技
2012-07-19 · TA获得超过1906个赞
知道小有建树答主
回答量:1067
采纳率:50%
帮助的人:625万
展开全部
char *p=new char[n];
delete []p;
更多追问追答
追问
char[n] 这个n是?为什么要写n
追答
不是要动态建立一个未知长度的数组么?n就是数组的长度 需要你从键盘输入的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-07-19
展开全部
你的这种想法最好用容器来解决,如果非要用new delete,那也可以自己用new delete来写一个简易的容易;或者你也可以使用CString 这个类
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式