#include <iostream>
#include <queue>
void generate_all_possible_binary_strings(std::string str) {
std::queue<std::string> q;
q.push(str);
while (!q.empty()) {
std::string temp = q.front();
size_t index = temp.find('?');
if (index != std::string::npos) {
temp[index] = '0';
q.push(temp);
temp[index] = '1';
q.push(temp);
}
else {
std::cout << temp << "\n";
}
q.pop();
}
}
int main() {
std::string str = "1?0?1";
generate_all_possible_binary_strings(str);
}
/*
run:
10001
10011
11001
11011
*/