Date: Thu, 12 Mar 2020 19:25:13 -0000
Apologies, I must have been referring to an old spec by accident.
C++11 and newer does indeed accept a string in one of the constructors.
However, the accepted string must be zeroes and ones. This doesn't seem very feasible, especially as we get larger bitsets.
Using current C++11 or newer, to initialize a bitset with a value of 80 bits, we would have to pass an 80 character string.
For this reason I see a need for the bitset string constructor to accept another argument, indicating the base of the string.
This way, initializing a value can be done with a much smaller string.
A base can also be passed to the to_string member function, telling it to output a string in that base, instead of just zeroes and ones.
Thank you,
Ramy
On March 12, 2020 at 6:07 AM, Magnus Fromreide <magfr_at_[hidden]> wrote:
On Thu, Mar 12, 2020 at 01:49:42AM -0400, ramy koudsi via Std-Proposals wrote:
Hi,
std::bitset does not have a size limit, however it has an initialization size limit. Bitsets cannot currently be initialized with anything bigger than a long long int.
To remove this limitation I propose adding another constructor that accepts a std::string object.
std::bitset already (since c++11) have a constructor accepting a
std::basic_string.
/MF
I see its use like:
std::bitset<80> bigbs(“FFFF95D3FFFFAC27FFFF”);
The example above uses hex strings, but can easily be changed to accept strings of any base by adding another constructor accepting a string and an argument showing the base.
std::bitset<12> littlebs(“AFD”, 16);
In addition, a member function to_string(int base) would be nice.
std::string littlestr = littlebs.to_string(16);
// littlestr is “AFD”
I wanted to hear your thoughts about this. Has anyone thought of this and come up with a better solution?
Thank you
Ramy
--
Std-Proposals mailing list
Std-Proposals_at_[hidden]
https://lists.isocpp.org/mailman/listinfo.cgi/std-proposals
Received on 2020-03-12 14:28:03