我编写了此代码来存储二进制序列中输入的每个位1的位置。程序的输出不是所需的。我得到的10100的输出是0x7fff9109be00。这是代码:#include <iostream>#include <bitset>using namespace std; int main() { bitset <5> inpSeq; int x = 0; int xorArray[x]; unsigned int i; cout << "Enter a 5-bit sequence: \n"; cin >> inpSeq; for ( i = 0; i < inpSeq.size(); i++) { if ( inpSeq[i] == 1 ) { x = x+1; xorArray[x] = i; } } cout << xorArray << "\n"; }为清楚起见进行更新:我想到的是'cout 最佳答案 cout << xorArray << "\n";这不会打印xorArray的元素;它打印其地址。您必须对其进行迭代(“循环遍历”):for (auto x : xorArray) cout << x << ' ';cout << '\n';另一个问题是,您正在尝试使用C++中不存在的可变长度数组。改用 vector 。现在it gives you your desired output:#include <iostream>#include <bitset>#include <vector>using namespace std;int main(){ bitset<5> inpSeq("10111"); std::vector<int> xorArray; for (unsigned int i = 0; i < inpSeq.size(); i++) { if (inpSeq[i] == 1) xorArray.push_back(i); } for (auto x : xorArray) cout << x << ' '; cout << '\n';}如果出于某种原因未使用C++ 11,则可以按传统方式执行该最终循环:for (std::vector<int>::const_iterator it = xorArray.begin(), end = xorArray.end(), it != end; ++it) { cout << *it << ' ';}还是幼稚的方式:for (unsigned int i = 0; i < xorArray.size(); i++) cout << xorArray[i] << ' ';关于c++ - 一个c++程序,以二进制顺序存储每个位1的位置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22722981/
10-14 08:31