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。

C++,打开一个文件,一次读入文件中两个字符,加密,并将加密后内容存入另一...
\/\/打开指定文件 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"))...

c++中怎么从一个文本文件中取出两列存入到另一文本文件中?
fi1.getline(b[i], 10);cout<< b[i]<<endl;} for (int i = 0; i < M; i++) \/\/读取c.txt { fi2.getline(c[i], 10);cout << c[i] << endl;} for(int i=0;i<N;i++) \/\/判断求和 for(int j=0;j<M;j++)if (c[j][0] == b[i][0] && c[j][1] ==...

C++ 如何将一个文件里的数据写入到另一个文件里?
C++ 实现文件复制的方法为:文件操作需要用到头函数fstream 用ifstream打开源文件,备读 用ofstream打开目标文件,备写 循环读取源文件 用getline()函数,逐行读取源文件到字符串中 用cout输出字符串到标准输出(屏幕)把读到的字符输出到目标文件 若读文件结束,结束循环 关闭源文件和目标文件 参考代码:i...

...并将读取出来的数据进行运算导入到另一个文件中。
1、首先我们在电脑上新建一个文件夹,名称叫txt2array。然后,打开我们的devc++,新建一个控制台c++项目,名称也叫txt2array。2、将项目文件及源代码文件以及我们演示用的数据文件都存放在txt2array文件夹中。3、向数据文件中写入一些演示用数据。4、读取文件。输入如下代码:运行下,看来我们读取成功了。

c++中如何将一个文件的内容复制到另一个文件.
system("type onefile.txt>otherfile.txt");\/\/将一个文件的内容复制到另一个文件中,并覆盖另一文件的内容,前提是两个文件都必须存在;system("type onefile.txt>>otherfile.txt");\/\/将一个文件的内容追加到另一个文件中,前提同上 你也可以尝试使用c++执行批处理文件 ...

C++,MFC工程如何浏览一个文件,复制到另外一个文件夹?
1、如何选择文件;2、选择好文件之后,如果复制;1st、关于文件选择,可参考下面这段代码:CString CDcPackerDlg::BootOpenDialog() \/\/返回选择的文件名称 { CString strFile = _T("");CFileDialog dlgFile(TRUE, NULL, NULL, OFN_HIDEREADONLY, _T("Describe Files (*.cfg)|*.cfg|All Fi...

C++将一个文件数据以二进制形式写入另一个文件
include <iostream>#include <fstream>int main(){ std::fstream fin, fout; fin.open("data1.bin", std::fstream::in | std::fstream::binary); fout.open("data2.bin", std::fstream::out | std::fstream::binary); int num; while(fin.read((char*)&num, sizeof...

c\/c++语言怎么写个文件移动到另外一个目录下的程序
如果是 在MFC下面可以这样 MoveFile(LPCTSTR lpExistingFileName, \/\/ file name LPCTSTR lpNewFileName \/\/ new file name); BOOL MoveMyFile(){ \/\/获取当前文件目录 CString strFileName = "YourFilePath\/YourFileName"; CString strNewFile = "YourNewPath\/YourNewFileName" ...

C++编程 加密解密,封装,主要是文件读取和打开,菜鸟一个,最好有较详细...
\/\/ 密文文件 char path_out[PATH_MAX] = "C:\\\\out.txt";char buffer[BUF_MAX];char ch;FILE * pIn = NULL, * pOut = NULL;\/\/ 打开要加密的文件 pIn = fopen(path_in, "rt");pOut = fopen(path_out, "wt");do { fgets(buffer, BUF_MAX, pIn);count = strlen(buffer);\/\/ ...

c++里复制一个文件到另一个文件夹
还可以利用system("md mydir")函数来解决。include <stdio.h> include <direct.h> int main(){ mkdir("folder"); \/\/ 在当前目录下建立一个folder文件夹 FILE *fp = fopen("folder\\file.txt", "w"); \/\/ fp为NULL fprintf(fp, "hello world");fclose(fp);return 0;} ...

相似回答
大家正在搜