bitset Problem
-
Warum geht dass nicht?
#include <iostream> #include <string> #include <vector> #include <cctype> #include <bitset> using std::cin; using std::cout; using std::endl; using std::string; using std::vector; using std::bitset; int main() { string user_bits; cin >> user_bits; const string::size_type size = user_bits.size(); for(string::iterator iter = user_bits.begin(); iter != user_bits.end(); ++iter) { if(*iter != '0' and *iter != '1') { cout << "Only binary!" << endl; return -1; } } bitset<size> bitvec(user_bits); // <- das "size" passt ihm hier irgendwie nicht return 0; }MfG
Stromberg
-
Templateparameter müssen zur Kompilezeit bekannt sein. Das ist bei deinem
sizenicht der Fall, da es von der Eingabe zur Laufzeit abhängt.Grüssli
-
Die Lösung sollte http://www.boost.org/doc/libs/1_37_0/libs/dynamic_bitset/dynamic_bitset.html sein.
-
Einen Teil kann einem auch die Templatespezialisierung
std::vector<bool>abnehmen, aber Boost eignet sich besser.