我正在研究机器模拟程序。我有一个主存储器的位集向量,因此我可以使用指向此向量的指针,pMemory-> at(i)来访问任何特定的“单词”。我真的更喜欢矢量的位组设计,而且我坚持使用它(这个程序应该在...大约6个小时,eek!)
我一直在努力弄清楚如何在不同的位置(模拟寄存器和其他内存位置等)进出bitset,所以我已经阅读了一些关于使用流的信息。我想出了这个:
#include <bitset>
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int main()
{
/** demonstrating use of stringstream to/from bitset **/
{
bitset<12> sourceBits(std::string("011010010100"));
bitset<12> targetBits(0);
stringstream iBits(stringstream::in | stringstream::out);
iBits << sourceBits.to_string();
cout << targetBits << endl;
iBits >> targetBits;
cout << targetBits << endl;
} //end stringstream to/from bitset
return 0;
}
所以,这是有效的,我可以调整这种技术以适合我的程序。
我的问题是,这是一个好主意吗?我是否缺少使用bitset&gt;&gt;的基本功能?和&lt;&lt;运营商?是否真的有必要进行所有这些手动争论?
另外,切向地说,将12位bitset复制到16位bitset时该怎么办?
谢谢,stackoverflow!在很多谷歌搜索之后,这是我对这个社区的第一个问题。我感谢大家的见解!
答案 0 :(得分:9)
你正在过度思考这个问题。要将一个bitset的值复制到另一个bitset,请使用赋值运算符。
#include <iostream>
#include <bitset>
int main () {
std::bitset<12> sourceBits(std::string("011010010100"));
std::bitset<12> targetBits(0);
targetBits = sourceBits;
std::cout << targetBits << "\n";
}
<小时/> 您的切线问题由
bitset::to_ulong
:回答
#include <iostream>
#include <bitset>
int main () {
std::bitset<12> sourceBits(std::string("011010010100"));
std::bitset<16> sixteen;
sixteen = sourceBits.to_ulong();
std::cout << sixteen << "\n";
}