我试图编写一个读入的Vigenere密码(-e加密,-d解密),一个关键字(在加密过程中使用),一个原始邮件来自的文本文件,以及加密/解密消息输出的另一个文本文件,全部来自命令行参数。我遇到了如何从命令行以字符串形式读取所有内容并使用字符进行实际加密的问题。我在vigenere密码上找到了很多其他程序,但是没有从命令行读入所有参数。 这是我的(未完成的)代码。
#include<iostream>
#include<string>
#include<fstream>
#include<sstream>
using namespace std;
char encipher(char key, char plain);
char decipher(char key, char cipher);
int main(int argc, char* argv[]){
ifstream inFile(argv[3]);
ofstream outFile(argv[4]);
string key = argv[2];
for (int i = 0; i < argc; i++){
string arg = argv[i];
if (arg == "-e"){
inFile.open(arg.c_str());
string plain = ;
encipher(key, plain);
}
else if (arg == "-d"){
inFile.open(arg.c_str());
decipher(key, cipher);
}
}
char encipher(char key, char plain){
for (int i = 0; i < key.size(); i++){
if (key[i] >= 'A' && key[i] <= 'Z')
key += key[i];
else if (key[i] >= 'a' && key[i] <= 'z')
key += key[i] + 'A' - 'a';
return key;
}
}
char decipher(char key, char cipher){
for (int i = 0; i < key.size(); i++){
if (key[i] >= 'A' && key[i] <= 'Z')
key -= key[i];
else if (key[i] >= 'a' && key[i] <= 'z')
key -= key[i] + 'A' - 'a';
}
}
答案 0 :(得分:0)
尝试使用strcmp而不是直接比较两个字符串。 在
if (arg == "-e")
和
else if (arg == "-d")