C++,打开一个文件,一次读入文件中两个字符,加密,并将加密后内容存入另一个文件中。

我想做一个简单的加密。算法大概是将当前字符与其后一字符异或后的值作为当前字符加密后的值。想实现的是:输入待加密的文件名(txt文件)后,一次读入文件中相连的两个字符,加密后的结果直接写入另一指定文件中(边读边写)。想请教一下具体代码要怎么写?
谢谢两位了。可是container我还没学过,而文件读写,真的,也不是很会。。。。
我自己写了一些,可以麻烦帮我看看吗?
void B_encrypt :: B_En()
{ char *p,*q;
fstream f;
f.open( file_name, ios :: in | ios :: binary);
f.seekg (0, ios :: beg);
f.read (p,sizeof (char)); f.seekg(1,ios :: beg);
f.read (q, sizeof (char));
//然后我想直接将p、q的内容异或,并写入到另一个文件里(还没有定义)
接着移动p、q两个指针。如此循环。(还不清楚for语句具体怎么实现)
我想问一下,文件本身带的指针beg、cur、end要怎么用啊?还有我这种想法可行吗?我想通过cout<<(*p);读出内容,为什么系统会有警告?
对了,输入文件名的时候是用单斜杠还是双斜杠啊?
//表示我真的学得很差。。。。跪求指教
}

我觉得你可以把指定文件打开,按行读入到一个vector容器中,在这个容器中进行加密操作,操作完再写入另一个文件

下边这个函数是我以前用到的一个包括打开一个文件,将文件中的内容按行存到一个vector容器中,然后再把每行的内容一个单词一个单词的在读出来;这个例子可能不符合你的要求,仅供参考吧

#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <vector>
#include <map>
#include <set>
using namespace std;

//打开指定文件
ifstream& open_file(ifstream &in,const string &file)
{
in.close();
in.clear();
in.open(file.c_str());
return in;
}

int main()
{

vector<string> lines_of_text;//存放文件每行的容器

ifstream infile;//定义一个读字符串流
if(!open_file(infile,"e:\\123.txt"))//这里,"e:\\123.txt“为想要加密的文件
{
return EXIT_FAILURE;
}

string textline;
while(getline(infile,textline))
lines_of_text.push_back(textline);//将文件的内容读入到textline字符串中

vector<string>::size_type line_no;

for(line_no line_num=0;line_num!=lines_of_text.size();++line_num)
{
istringstream line(lines_of_text[line_num]);
string word;
while(line>>word)//这里line>>word 是将保存每行内容的vector容器中的内容一个单词一个单 词的存入word中
{
这里可以加处理函数(加密函数)
}

}

}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-08-26
不要放入vector, 因为你要确保数据是已清除. 最好是固定一个数组, 重覆是用相同数组来进行加密本回答被提问者采纳
第2个回答  2013-08-26
你会不会从文件中读、写一个字符?
如果不会就去看一下c++的文件处理library。 fstream。
相似回答