Vigenere Cipher с использованием командной строки

Я пытаюсь написать Vigenere Cipher, который читает (-e для шифрования, -d для дешифрования), ключевое слово (используется во время шифрования), текстовый файл, откуда исходит исходное сообщение, и другой текстовый файл, где зашифрованное / расшифрованное сообщение передается всем, из аргументов командной строки. У меня проблема с тем, как читать все из командной строки в виде строки и использовать символы для фактического шифрования. Я нашел множество других программ только на надежных шифрах, но ни на одной из них все аргументы не были прочитаны из командной строки.
Вот мой (незаконченный) код.

#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';

}
}

2

Решение

Попробуйте использовать strcmp, а не сразу сравнивать две строки.
В

if (arg == "-e")

а также

else if (arg == "-d")
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]