template <class _Elem = char, class _Traits = char_traits<_Elem>, class _Alloc = allocator<_Elem>>
std::string getstrbits(const std::basic_string<_Elem, _Traits, _Alloc>& s) {
std::stringstream ret;
const constexpr int digits = std::numeric_limits<_Elem>::digits + std::numeric_limits<_Elem>::is_signed;
for (auto c : s) ret << std::bitset<digits>(c).to_string();
return ret.str();
}
Пропускаешь строчку через функцию, а затем скармливаешь bitset. Только нужно понимать, что bitset это массив фиксированного размера, а string динамического.