关于C++中文件读取的一个问题,100分急求答案

我C++学的不好,C++关于文件读取我知道一个方法,见下面的代码:infile.unsetf(ios::skipws);charch;while(infile>>ch)o... 我C++学的不好,C++关于文件读取我知道一个方法,见下面的代码:
infile.unsetf(ios::skipws);
char ch;
while(infile>>ch)
outfile<<ch;
也就是一次一个字符的读取拉.但是我现在做的一个DES加密的程序要求一次完成对8个字节的加密和解密,定义是这样的:
char skey[8]; //密钥
char inbuff[8]; //输入
char oubuff[8]; //输出
要求是完成对文件的加密和解密,那么,我理解的是从源文件中读取8个字节的明文,加密之后把8个字节的密文输出到目的文件.那么,这应该如何做到的呢?
while(infile>>oubuff){

jm.Des_one(oubuff,inbuff, key, DECRYPT);

outfile<<inbuff;
}
这样是不行的.
请大侠们指教,因为明天晚上就要交,所以比较着急啊,我只要知道如何一次完成8个字节的读写就好了,谢谢啦:-)
相应的源代码我改成了这样:
char ch;
for(int i=0;i<=7;i++){
infile>>ch;
inbuff[i]=ch;
这样就对了,但是这样只能完成前8个字节的加密和解密,因此我想得到源文件的字节数目,这样可以继续往下读.我找到的得到文件长度的代码是:
long FileLen;
streampos begin = file.tellg(); //获得开头的位置
file.seekg(0, ios::end); //定位到文件尾部
streampos end = file.tellg(); //获得尾部的位置
file.close();
FileLen=end-begin; //利用streampos的"-"操作得到文件的字节长度
其中最后一句是不对的,我在调试状态下看到begin=0,end=40,但是FileLen确实一个非常大的随机数,我又纳闷了,谁教教我~~~
展开
 我来答
樱凌准
2008-07-02 · TA获得超过243个赞
知道小有建树答主
回答量:259
采纳率:0%
帮助的人:255万
展开全部
貌似方法好多的样子....

读的时候这样....

#include <fstream.h>

...

ifstream ins;
int i;
char iBuff[8];

if(!ins.open(FILENAME))return;

for(i=0;i<=7;i++)
{
iBuff[i]=ins.get();
}

写的时候用ofstream
ofstream::put(unsigned char)
也是每次写入一个字节...

------------------------------------------

貌似理解错了..

while(infile>>oubuff){
jm.Des_one(oubuff,inbuff, key, DECRYPT);
outfile<<inbuff;
}
这一段只要能连续每次读到8个字节就好了吧...
那既然infile>>ch成立,为什么不能infile>>oubuff[i]呢- -``
while的条件用文件结束标志判断...(infile.eof()?还是怎么写....infile是怎么定义的- -``)
....
于是 ...
while(!infile.eof())
{
for(int i=0;i<=7;i++)
infile>>oubuff[i];
}

说......其实我也不知道对不对- -```

---------------------------------

FileLen=end-begin;这句怎么会出问题呢- -``

那。。不取文件长度,直接while(!infile.eof())不行么?
百度网友c6c78e9
2008-07-01 · TA获得超过2283个赞
知道小有建树答主
回答量:620
采纳率:0%
帮助的人:977万
展开全部
有个read和getline方法可以读指定数目的字符,你试试,我记不清了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
风轻云度
2008-07-01 · TA获得超过1423个赞
知道大有可为答主
回答量:1835
采纳率:0%
帮助的人:0
展开全部
为何不行?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式