Я пытаюсь реализовать LZW-Coding, и теперь я хочу сохранить тип данных словаря в другом файле cpp и записать в него изменения в словарь через этот файл. Как мне это реализовать?
РЕДАКТИРОВАТЬ: - Я знаю Обработка файлов, но здесь я хочу записать изменения в тип данных карты, поддерживаемый в каком-то другом файле. Я хочу объявить словарь (Карта) LZW. Схема - это некоторый файл cpp. Кроме того, я хочу обновить содержимое словаря через другой файл CPP Sender.cpp.
В код ниже,я сохранил словарь в одном файле и внес в него изменения, так как отправитель передавал сообщения, но теперь я хочу инициализировать этот словарь в каком-то другом файле cpp и сохранить изменения в своем словаре через прикрепленный файл.
#include <bits/stdc++.h>
using namespace std;
map<string, int> dictionary;
vector<int> LZW_coding(string text)
{
vector<int> coded;
string curr;
curr.push_back(text[0]);
string prev;
prev.push_back(text[0]);
int index = 5;
int i = 1;
while (i < text.length())
{
curr.push_back(text[i]);
if (dictionary[curr] == 0){
dictionary[curr] = index;
coded.push_back(dictionary[prev]);
curr = "", prev = "";
curr.push_back(text[i]);
prev.push_back(text[i]);
i++;
index++;
}
else{
prev.push_back(text[i]);
i++;
}
}
coded.push_back(dictionary[prev]);
return coded;
}
int main()
{
cout << "Enter text to be encoded" << endl;
string text;
cin >> text;
dictionary["a"] = 1;
dictionary["b"] = 2;
dictionary["c"] = 3;
dictionary[" "] = 4;
map<string, int>::iterator itr;
vector<int> code = LZW_coding(text);
cout << "Encoded Output is" << endl;
for (int i = 0; i < code.size(); i++)
{
cout << code[i] << " ";
}
cout << endl;
return 0;
}