Я пытаюсь написать шифр Vigenere, который читает (-e для шифрования, -d для дешифрования), ключевое слово (используемое во время шифрования), текстовый файл, в котором оригинальное сообщение и другой текстовый файл, в который выдается зашифрованное/дешифрованное сообщение, все из аргументов командной строки. У меня возникла проблема с тем, как читать все из командной строки в виде строки и использовать символы для фактического шифрования. Я нашел много других программ только для шифров vigenere, но нигде, где все аргументы считываются из командной строки. Вот мой (незавершенный) код.Vigenere Cipher с помощью команд командной строки
#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';
}
}
Вы пытались пройти каждый спор между "характер, как: vigenere.exe -e„это моя строка“ – hypnos
им не возникли проблемы на самом деле передавая аргументы? , im, имеющих проблему с преобразованием их в символы в фактическом коде (именно это нужно использовать ASCII для шифрования), в то время как они передаются как строки, если это имеет смысл – chiorboyatbest