I think this much code will suffice:
// include necessary files
#include <algorithm> // for std::copy
#include <fstream> // for std::ifstream
#include <iostream> // for std::cout
#include <iterator> // for std::ostream_iterator
#include <map> // for std::map
#include <string> // for std::string
#include <vector> // for std::vector
// function to convert string containing 0s and 1s
// to std::vector<bool> https://stackoverflow.com/a/27367542
auto str_to_vec(std::string &&s) {
// declare vector to return, and later insert into dictionary
std::vector<bool> v;
// extract characters from the string repeatedly
// https://en.cppreference.com/w/cpp/language/range-for
for (auto ch : s)
// push true in vector if character is '1' else false, I've
// ignored checking if the string contains only 0s and 1s,
// you may wish to add a validation check for that yourself
v.push_back(ch == '1');
// return the constructed vector
return v;
}
// driver function
int main() {
// open your file, replace filename with your dictionary file
std::ifstream fin("my_dict.txt");
// declare your dictionary
std::map<char, std::vector<bool>> dict;
// extract strings from the file repeatedly
for (std::string str; fin >> str;)
// check if length of string is atleast 2 you may skip this
// if already guaranteed
if (str.length() > 1)
// https://en.cppreference.com/w/cpp/container/map/operator_at
dict[str[0]] = str_to_vec(str.substr(1));
// now do something with your dictionary here
for (auto &&[ch, v] : dict) {
std::cout << '\n' << ch << " : ";
std::copy(v.begin(), v.end(),
std::ostream_iterator<bool>(std::cout, ""));
}
}
Sample run : https://wandbox.org/permlink/1fi756kz8grmNPf6
CLICK HERE to find out more related problems solutions.