Как создать правильно библиотеку с++?
Столкнулся с проблемой, не знаю как создать библиотеку
header.h
pragma once
#include <string>
using namespace std;
#include <ctime>
class Caesar {
private:
string baseString;
string encryptedString;
int key;
public:
Caesar();
Caesar(string base, int k);
~Caesar();
int encryption();
int decryption();
const string& getEncryptedString() const;
const string& getBaseString() const;
int getKey() const;
void deleteBaseString();
void deleteEncryptedString();
void deleteKey();
};
#include "pch.h"
#include "Header.h"
Caesar::Caesar() : baseString(), key(0), encryptedString() {
//The empty body of the constructor
}
Caesar::Caesar(string base, int k) : baseString(base), key(k), encryptedString() {
//The empty body of the constructor
}
Caesar::~Caesar() {
//The empty body of the destructor
}
int Caesar::encryption() {
if (baseString.empty()) {
//The string is empty!
return 1;
}
char ch = ' ', shift = 0, lastCharater = 90, firstCharacter = 65;
this->deleteEncryptedString();
for (int i = 0; i < baseString.size(); i++) {
ch = baseString.at(i);
if (isalpha(ch)) {
if (key > 0) {
lastCharater = (islower(ch)) ? 122 : 90;
if (ch + key > lastCharater) {
shift = ch + key - 26;
} else {
shift = ch + key;
}
} else {
firstCharacter = (islower(ch)) ? 97 : 65;
if (ch + key < firstCharacter) {
shift = ch + key + 26;
} else {
shift = ch + key;
}
}
encryptedString.push_back(shift);
} else {
encryptedString.push_back(ch);
}
}
return 0;
}
int Caesar::decryption() {
if (encryptedString.empty()) {
//The string is empty!
return 1;
}
char ch = ' ', shift = 0, lastCharater = 90, firstCharacter = 65;
this->deleteBaseString();
for (int i = 0; i < encryptedString.size(); i++) {
ch = encryptedString.at(i);
if (isalpha(ch)) {
if (key > 0) {
firstCharacter = (islower(ch)) ? 97 : 65;
if (ch - key < firstCharacter) {
shift = ch - key + 26;
} else {
shift = ch - key;
}
} else {
lastCharater = (islower(ch)) ? 122 : 90;
if (ch - key > lastCharater) {
shift = ch - key - 26;
} else {
shift = ch - key;
}
}
baseString.push_back(shift);
} else {
baseString.push_back(ch);
}
}
return 0;
}
const string & Caesar::getEncryptedString() const {
return encryptedString;
}
const string & Caesar::getBaseString() const {
return baseString;
}
int Caesar::getKey() const {
return key;
}
void Caesar::deleteBaseString() {
baseString.clear();
}
void Caesar::deleteEncryptedString() {
encryptedString.clear();
}
void Caesar::deleteKey() {
srand(time(NULL));
key = rand() % 101;
}