标题:ifstream 读文件后最后会出现乱码.
只看楼主
ivanqiu
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-6-29
 问题点数:0 回复次数:2 
ifstream 读文件后最后会出现乱码.

index.htm
<HTML>
<HEAD><TITLE>internet服务收费标准</TITLE></HEAD>
<pre><H1>internet服务收费标准</H1>
</P>
<hr><form method="POST" action="CHScript.dll">
您要查询的类型是:
<UL><LI>A类用户<input name="usertype" type=radio value="A">
<LI>B类用户<input name="usertype" type=radio value="B">
<LI>C类用户<input name="usertype" type=radio value="C">
<LI>D类用户<input name="usertype" type=radio value="D">
</UL>
<center>
<input type=submit value="提交"> <input type=reset value="取消"></center>
</pre></form><hr>
</HTML>

// 读取文件
///////////////////////////////////////////////////////////////
void Read(long length = 0)
{
ifstream ifs("index.htm",ios::out | ios::binary);
char *buffer = new char[length];

if(!ifs.eof() && !ifs.fail())
{
ifs.read(buffer, length);
}else{
buffer = NULL;
}
ifs.close();
std::cout<<buffer<<std::endl;
if(buffer)
{
delete [] buffer;
}
}
为什么最后会出现乱码? 是哪里有问题.大家帮我看看...
搜索更多相关主题的帖子: quot ifstream 乱码 input radio 
2007-06-29 09:40
Rey1023
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2007-3-10
得分:0 

在定义的字符串长度后面加个结尾符,不然后面的内容就会是随机的,所以就会有乱码!


人生就是一场赌博,生命中最重要的是尝试.生活中最糟糕的事情不是你冒险失败,而是你根本没有去尝试!
2007-06-29 10:40
余来
Rank: 6Rank: 6
等 级:贵宾
威 望:26
帖 子:956
专家分:18
注 册:2006-8-13
得分:0 
char *buffer = new char[length];
这里修改成
char &buffer=new char[length+2]//多分配两个字符空间,1个也行,我一般多2个
memset(buffer,0,sizeof(char)*length+2); 清0

2007-06-29 10:46



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-151219-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015433 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved