十进制到二进制转换器C++

十进制到二进制转换器C++,c++,C++,我创建这个程序只是为了好玩,但我有个问题 #include <iostream> #include <vector> using namespace std; int main() { int j = 1; std::vector<int> n_bin(j); int n=0; int a; cin>>n; do { n_bin[j] = n%2; n= n/2; a++; j++; }while(n>0

我创建这个程序只是为了好玩,但我有个问题

#include <iostream>
#include <vector>
using namespace std;
int main()
{
int j = 1;
std::vector<int> n_bin(j);
int n=0; 
int a;
cin>>n;
do
{

    n_bin[j] = n%2;
    n= n/2;
    a++;
    j++;

}while(n>0);

for(j=a; j>0; j--)
{

    cout<<n_bin[j];
}

return 0;
} 唯一的问题是输出,实际上在实际二进制数之前,我得到了更多的数字,例如:
如果我将104赋值给n,则得到:2469786291687454302010819088010081377601081908804267976516874543020001081377601081915240267976516874302183600821483962728010813776014697886271687430200013220880108136960-1010813776010836496101000,其中只有最后7个元素有用。

n\u bin被初始化为在n\u bin[0]处有一个元素。n_-bin[j]通过访问超出范围的索引,对j的任何值(0除外)表现出未定义的行为。

向量只包含1个元素,但您尝试在n_-bin[j]中访问超出范围的元素。这是未定义的行为A未初始化。如何设置向量以容纳多个元素?vector::resize或仅使用push_back,您根本不需要j。
void decToBinary(int n) 
{
    int binaryNum[1000];
    int i = 0;
    while(n > 0) 
    {
        binaryNum[i] = n % 2;
        n = n / 2;
        i++;
    }
    for(int j = i - 1; j >= 0; j--)
    {
        cout << binaryNum[j];
    }
}