一两句英文测试通过了。三四段的文章解密失败,只得出原文第一行的一部分。自己调试了一下发现问题出在解密的eof判断那里,没有到达文件尾部就提前退出了,所以有无人帮看一下,为什么eof提前终止了循环。
#include<iostream>
#include<fstream>
#include<vector>
#include<string>
using namespace std;
int main()
{
cout << "选择操作\n加密 1\t解密 2\ 退出 0\n";
int a;
cin >> a;
switch(a){
case 1:
{
ifstream myFile("in.txt");
if(!myFile.is_open()){
cout << "error" << endl;
system("pause");
return 0;
}
vector<string> password;
for(int i = 0;!myFile.eof();i++){
string str;
getline(myFile, str);
password.push_back(str);
}
myFile.close();
for(int i = 0 ;i < password.size();i++){
for(int j = 0;j < password[i].size();j++){
if(!password[i][j])
break;
if(password[i][j] < 128 - 56)
password[i][j] += 56;
else
password[i][j] += (56-128);
}
}
ofstream out("out.txt");
if (out.is_open()) {
for(int i = 0;i < password.size();i++){
out << password[i] << '\n';
}
out.close();
}
return 0;
}
case 2:
{
ifstream myFile("out.txt");
if(!myFile.is_open())
{
cout << "error" << endl;
system("pause");
return 0;
}
vector<string> password;
for(int i = 0;!myFile.eof();i++){
string str;
getline(myFile, str);
password.push_back(str);
}
myFile.close();
for(int i = 0 ;i < password.size();i++){
for(int j = 0;j < password[i].size();j++){
if(!password[i][j])
break;
if(password[i][j] >= 56)
password[i][j] -= 56;
else
password[i][j] -= (56-128);
}
}
ofstream out("_out.txt");
if (out.is_open()) {
for(int i = 0;i < password.size();i++){
out << password[i] << '\n';
}
out.close();
}
return 0;
}
default:
return 0;
}
}