2016-12-05 6 views
2

Я пытаюсь написать шифр 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'; 

    } 
} 
+0

Вы пытались пройти каждый спор между "характер, как: vigenere.exe -e„это моя строка“ – hypnos

+0

им не возникли проблемы на самом деле передавая аргументы? , im, имеющих проблему с преобразованием их в символы в фактическом коде (именно это нужно использовать ASCII для шифрования), в то время как они передаются как строки, если это имеет смысл – chiorboyatbest

ответ

0

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

if (arg == "-e") 

и

else if (arg == "-d")