#include <iostream>
#include <fstream>
#include <string>
#include <vector>
const std::wstring alpha = L"абвгдеёжзийклмнопрстуфхцчшщъыьэюя";
typedef std::vector<std::size_t> codeword;
void string_to_codeword(const std::wstring &str, codeword &codes)
{
for (auto ch : str)
{
std::size_t code = alpha.find(ch);
if (code != std::wstring::npos)
codes.push_back(code);
}
}
void codeword_to_string(const codeword &codes, std::wstring &str)
{
std::wstring tmp;
for (auto code : codes)
{
std::wcout << L"sym: " << alpha[code] << std::endl;
str += alpha[code];
tmp += alpha[code];
}
std::wcout << tmp << std::endl;
}
void encrypt(codeword &src, codeword &dest)
{
}
int main()
{
std::wstring s = L"абвгде";
codeword codes;
string_to_codeword(s, codes);
for (const auto code : codes)
std::cout << code << " ";
std::cout << std::endl;
std::wstring result;
codeword_to_string(codes, result);
std::wcout << result << std::endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8ZnN0cmVhbT4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPHZlY3Rvcj4KCgoKY29uc3Qgc3RkOjp3c3RyaW5nIGFscGhhID0gTCLQsNCx0LLQs9C00LXRkdC20LfQuNC50LrQu9C80L3QvtC/0YDRgdGC0YPRhNGF0YbRh9GI0YnRitGL0YzRjdGO0Y8iOwoKdHlwZWRlZiBzdGQ6OnZlY3RvcjxzdGQ6OnNpemVfdD4gY29kZXdvcmQ7CgoKCnZvaWQgc3RyaW5nX3RvX2NvZGV3b3JkKGNvbnN0IHN0ZDo6d3N0cmluZyAmc3RyLCBjb2Rld29yZCAmY29kZXMpCnsKCWZvciAoYXV0byBjaCA6IHN0cikKCXsKCQlzdGQ6OnNpemVfdCBjb2RlID0gYWxwaGEuZmluZChjaCk7CgkJaWYgKGNvZGUgIT0gc3RkOjp3c3RyaW5nOjpucG9zKQoJCQljb2Rlcy5wdXNoX2JhY2soY29kZSk7Cgl9Cn0KCnZvaWQgY29kZXdvcmRfdG9fc3RyaW5nKGNvbnN0IGNvZGV3b3JkICZjb2Rlcywgc3RkOjp3c3RyaW5nICZzdHIpCnsKCXN0ZDo6d3N0cmluZyB0bXA7Cglmb3IgKGF1dG8gY29kZSA6IGNvZGVzKQoJewoJCXN0ZDo6d2NvdXQgPDwgTCJzeW06ICIgPDwgYWxwaGFbY29kZV0gPDwgc3RkOjplbmRsOwkKCQlzdHIgKz0gYWxwaGFbY29kZV07CgkJdG1wICs9IGFscGhhW2NvZGVdOwoJfQoJc3RkOjp3Y291dCA8PCB0bXAgPDwgc3RkOjplbmRsOwp9Cgp2b2lkIGVuY3J5cHQoY29kZXdvcmQgJnNyYywgY29kZXdvcmQgJmRlc3QpCnsKCn0KCmludCBtYWluKCkKewoJc3RkOjp3c3RyaW5nIHMgPSBMItCw0LHQstCz0LTQtSI7Cgljb2Rld29yZCBjb2RlczsKCglzdHJpbmdfdG9fY29kZXdvcmQocywgY29kZXMpOwoJZm9yIChjb25zdCBhdXRvIGNvZGUgOiBjb2RlcykKCQlzdGQ6OmNvdXQgPDwgY29kZSA8PCAiICI7CglzdGQ6OmNvdXQgPDwgc3RkOjplbmRsOwoKCglzdGQ6OndzdHJpbmcgcmVzdWx0OwoJY29kZXdvcmRfdG9fc3RyaW5nKGNvZGVzLCByZXN1bHQpOwoJc3RkOjp3Y291dCA8PCByZXN1bHQgPDwgc3RkOjplbmRsOwp9Cg==