XOR 演算子と単純な 1 文字のキー暗号化をいじり始めて以来、これまで見たことのない問題が発生しています。プログラムを 2 回目に実行した後、テキストの末尾には常にランダムな ASCII 文字が含まれます。もう 1 つの問題は、「事前注文」と「事後注文」というテキストが、プログラムの反復ごとに交互に変更されることです。これのほとんどは単純に初心者のミスによるものであり、特にこれらの問題が発生する方法での IO の経験不足によるものだと確信しています。
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main()
{
ifstream ifile;
ofstream ofile;
string toProc;
string file;
char key = ' ';
cout << "Enter file location: \n";
cin >> file;
cout << "Enter key: \n";
cin >> key;
ifile.open(file);
if(ifile.is_open())
{
char temp;
temp = ifile.get();
toProc.push_back(temp);
while(ifile.good())
{
temp = ifile.get();
toProc.push_back(temp);
}
ifile.close();
}
else
{
cout << "No file found.\n";
}
cout << "Pre action: " << toProc << endl;
for(int i = 0; i < toProc.size(); i++)
toProc[i] ^= key;
cout << "Post action: " << toProc << endl;
ofile.open(file);
ofile << toProc;
ofile.close();
}