//Ciphers/SourceFiles/Atbash.cpp //Matthew Ellison // Created: 4-30-18 //Modified: 4-30-18 //This file contains the implementation of the Atbash class #include "../Headers/Atbash.hpp" #include Atbash::Atbash(){ } Atbash::~Atbash(){ } void Atbash::setInputString(std::string input){ //Make sure inputString is empty reset(); //Strip all punctuation and whitespace from input and make all letters capital for(int cnt = 0;cnt < input.size();++cnt){ char letter = input[cnt]; //If it is upper case add it to the inputString if(isupper(letter)){ inputString += letter; } //If it is lower case make it upper case and add it to the inputString else if(islower(letter)){ inputString += toupper(letter); } //If it is anything else ignore it } } std::string Atbash::getInputString() const{ return inputString; } std::string Atbash::getOutputString() const{ return outputString; } std::string Atbash::encode(){ //Step through every element in the inputString and shift it the correct amount for(int cnt = 0;cnt < inputString.size();++cnt){ outputString += (inputString[cnt] + 25 - (2 * (inputString[cnt] - 'A'))); } return outputString; } std::string Atbash::encode(std::string input){ setInputString(input); return encode(); } std::string Atbash::decode(){ //Make sure outputString is empty outputString = ""; for(int cnt = 0;cnt < inputString.size();++cnt){ outputString += (inputString[cnt] + 25 - (2 * (inputString[cnt] - 'A'))); } return outputString; } std::string Atbash::decode(std::string input){ setInputString(input); return decode(); } void Atbash::reset(){ inputString = outputString = ""; }